示例表 tb 資料如下
id value
—————
1 aa
1 bb
2 aaa
2 bbb
2 ccc
第一種
selectid,
[val]=
( select
[value]+
','from
tb as
b
where
b.id
=a.id
forxml path(
'') )
from
tb as
a
第一種顯示結果
1 aa,bb,
1 aa,bb,
2 aaa,bbb,ccc,
2 aaa,bbb,ccc,
2 aaa,bbb,ccc,
第二種
selectid,
[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函式替換掉首端的逗號)
selectid,
[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函式將所有空格替換成逗號)
selectid,
[val]=
replace
( (select
[value]as
[data()
]from
tb as
b
where
b.id
=a.id
forxml path(
'')) , ''
, ','
)
from
tb as
a
group
byid
結果與第三種一樣。
解析:[data()] 這裡據說是起到乙個類似陣列的作用,具體用法還要再查。
如果外圍不用replace函式包住,則返回的結果是 aaa bbb ccc ,每項之間有空格,所以最後用replace函式將所有空格替換成逗號。
mysql多行合併一行,一行拆分多行
資料 建表語句 drop table if exists 品牌 create table 品牌 id int 0 not null,品牌 varchar 255 character set utf8 collate utf8 general ci null default null engine i...
SQL查詢多行合併成一行
問題描述 無論是在sql 2000,還是在 sql 2005 中,都沒有提供字串的聚合函式,所以,當我們在處理下列要求時,會比較麻煩 有表tb,如下 id value 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需要得到結果 id values 1 aa,bb 2 aaa,bbb,ccc...
pandas實現多行合併一行 一行拆分多行
import pandas as pd 構造資料 data pd.dataframe 合併資料 合併前 合併後 import pandas as pd 構造資料 data pd.dataframe 拆分資料 data pinpai data 品牌 str.split expand true data...