SQL Server 將兩行或者多行拼接成一行資料

2022-02-13 15:10:35 字數 2406 閱讀 2037

乙個朋友,碰到乙個問題。

就是查詢出來的結果集,需要每隔三行。就將這三行資料以此拼接為一行顯示。起初我想著用row_number加case when去做,發現結果並非我預期那樣。

結果如下:

由於別人的資料,不方便顯示。查詢出來還是為三行資料,只是將其餘部分展現出了空值。這種結果是不行的。

這裡的左連線條件只需要寫,下一行行數減一等於當前行數即可。以此類推

例:

from

#tmptest t1

left

join #tmptest t2 on t1.rownum = t2.rownum -

1left

join #tmptest t3 on t2.rownum = t3.rownum -

1

這樣資料依然會是三行,但他會將第二行的資料在第一行的資料後進行拼接,將第三行的資料在第二行後進行拼接。

假設你有三條資料,那麼最終只需在查詢結果中。針對於row_number排序後的行數進行取模拿到第一行便可得到你想要的資料。

rownum %3=

1

有幾行,便模於幾。

sql server:按照資料庫row_number()產生的行號,將相鄰奇數行與偶數行拼接成一行。

思路:使用表 左自連線。

模擬資料來源表結構,使用臨時表

插入模擬資料

模擬按照code欄位排序後生成 row_number() 行號

將兩行資料合併成一行,奇數行號在左側,偶數行號在右側

模擬效果如下圖所示

完整的模擬過程sql如下: --

模擬資料來源表結構

create

table

#test(

code

varchar(50

), remark

varchar(200

) )

--模擬資料

insert

into #test(code, remark) values('

a', '

a remark');

insert

into #test(code, remark) values('

b', '

b remark');

insert

into #test(code, remark) values('

c', '

c remark');

insert

into #test(code, remark) values('

d', '

d remark');

--模擬按照code欄位排序後生成行號

select row_number() over(order

by code) as

rownum, code

,remark

into

#tmptest

from

#test

order

bycode

--將兩行資料合併成一行,奇數行號在左側,偶數行號在右側

select

test1.rownum

,test1.code

,test1.remark

,test2.rownum

asrownum2

,test2.code

ascode2

,test2.remark

asremark2

from

#tmptest test1

left

join #tmptest test2 on test1.rownum = test2.rownum -

1and test2.rownum %2=

0where test1.rownum %2=

1

awk輸出相同列的前兩行和後兩行

要求列印,第一列相同的頭兩行和後兩行 file ax bx 1 ax bx 2 ax bx 1 ax bx 8 ax bx 1 ax bx 3 ax bx 5 cx bx 1 cx bx 0 cx bx 1 cx bx 6 cx bx 9 ex bx 1 ex bx a ex bx 1 ex bx ...

CSS設定文字一行或者兩行顯示,多餘部分顯示省略號

一行顯示否則省略號 word break break all 屬性規定自動換行的處理方法。normal 使用瀏覽器預設的換行規則。break all 允許在單詞內換行。keep all 只能在半形空格或連字元處換行。text overflow ellipsis display webkit box ...

python指令碼前兩行

1.第一行指定直譯器路徑 usr bin env python 詳細說明 usr bin python是告訴作業系統執行這個指令碼的時候,呼叫 usr bin下的python直譯器 usr bin env python這種用法是為了防止使用者沒有將python裝在預設的 usr bin路徑裡。當系統...