今天在博問上看到乙個sql語句需求:
表結構id name
1 羅濤
1 濤帥帥
2 劉亮
2 亮哥
2 亮傻
要得出結果
id name
1 羅濤,濤帥帥
2 劉亮,亮哥,亮傻
這是乙個典型的分組合併的需求,一般有兩種方法,一是寫乙個函式處理,二是用xml for path方法,**如下:1--
建立測試環境
2create
table
bwtest3(
4id
int,
5name
varchar(10
)6)7
go8--插入資料
9insert
bwtest
values(1
,'羅濤'
)
10insert
bwtest
values(1
,'濤帥帥')11
insert
bwtest
values(2
,'劉亮'
)12insert
bwtest
values(2
,'亮哥'
)13insert
bwtest
values(2
,'亮傻'
)14go15
16--
方法一:函式法
17--
建立函式
18create
function
getb(
@idint)19
returns
varchar
(8000)20
as21
begin
22declare
@svarchar
(8000)23
set@s=''
24select@s=
@s+',
'+name
from
bwtest
whereid=
@id;
25return
@s26
end27
go28
29--
呼叫30
select
id,
substring
(dbo.getb(id),2,
len(dbo.getb(id))-1
) as
name
from
bwtest
group
byid;
3132
33--
方法二:利用xml path法
34select
id,stuff
((select',
'+name
from
bwtest
whereid=
bw.id
forxml path(
'')),1,
1,'')
asname
from
bwtest bw
group
byid
3536
37--
刪除測試環境
38drop
function
getb
39drop
table
bwtest
40--
結果41
/*42
id name
43----------- --------
441 羅濤,濤帥帥
452 劉亮,亮哥,亮傻
46*/
利用xml for path 合併分組資訊
sql stuff用法
sql擷取字串
學習筆記 SQL語句處理分組合併
今天在博問上看到乙個sql語句需求 表結構 id name 1 羅濤 1 濤帥帥 2 劉亮 2 亮哥 2 亮傻 要得出結果 id name 1 羅濤,濤帥帥 2 劉亮,亮哥,亮傻 這是乙個典型的分組合併的需求,一般有兩種方法,一是寫乙個函式處理,二是用xml for path方法,如下 1 建立測試...
分組字元合併SQL語句
描述 將如下形式的資料按id欄位合併value欄位。id value 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需要得到結果 id value 1 aa,bb 2 aaa,bbb,ccc 即 group by id,求 value 的和 字串相加 1 sql2000中只能用自定義的函式...
SQL縱列單元值分組合併
原表 id,task id,current unit id 42688645,30404829,104 42688647,30404829,128 42688648,30404829,117 42688650,30404829,118 42688652,30404829,119 42688653,3...