彙總查詢資料到一行

2021-08-26 19:52:27 字數 1685 閱讀 5570

示例表 tb 資料如下

id value

—————

1 aa

1 bb

2 aaa

2 bbb

2 ccc

第一種

select

id,

[val]=

( select

[value]+

','from

tb as

b where

b.id

=a.id

forxml path(

'') )

from

tb asa

第一種顯示結果

1 aa,bb,

1 aa,bb,

2 aaa,bbb,ccc,

2 aaa,bbb,ccc,

2 aaa,bbb,ccc,

第二種

select

id,

[val]=

( select

[value]+

','from

tb as

b where

b.id

=a.id

forxml path(

'') )

from

tb as

a group

byid

第二種顯示結果

1 aa,bb,

2 aaa,bbb,ccc,

第三種 (用stuff函式替換掉首端的逗號)

select

id,

[val]=

stuff

( (select',

'+[value

]from

tb as

b where

b.id

=a.id

forxml path(

'')) , 1,

1, '')

from

tb as

a group

byid

第三種顯示結果

1 aa,bb

2 aaa,bbb,ccc

stuff 函式將字串插入另一字串。它在第乙個字串中從開始位置刪除指定長度的字元;然後將第二個字串插入第乙個字串的開始位置。

stuff ( character_expression , start , length ,character_expression_insert )

第四種 (用replace函式將所有空格替換成逗號)

select

id,

[val]=

replace

( (select

[value]as

[data()

]from

tb as

b where

b.id

=a.id

forxml path(

'')) , ''

, ','

) from

tb as

a group

byid

結果與第三種一樣。

合併多行查詢資料到一行

示例表 tb 資料如下 id value 1 aa 1 bb 2 aaa 2 bbb 2 ccc 第一種 select id,val select value from tb as b where b.id a.id forxml path from tb as a 第一種顯示結果 1 aa,bb,...

做一行愛一行

2013年9 月30日13 04 34 地點 公司 筆者 小菜 it界高手很多,謙虛進步自己 目前適合 android iphone 在除錯階段 內容 今天是九月的最後一天了,也沒有太多的心思的編寫 了,看看這個月的工作效率,確實不是很高。最近也在看一本書,可能很多的博友都知道這本書的 程式設計師你...

資料一行變多行的SQL查詢

資料一行變多行的sql查詢 對於資料表中的某一資料列,要求顯示時資料不能超過5位,如果超過則多行顯示。例如,當該列值為100000時,需要將其顯示為兩行,其中第一行的該列值為99999,第二行的該列值為1,其他列值完全相同。例如 有一張表產量表t,有三列資料,年份 year 車間號 id 產量 qt...