表A中id與表B中aid為一對多的關係 例如: 表A: 表B: 使用for xml path('') 和stuff合併顯示多行數據到一行中 : 第一種,不使用stuff,結果如下: 結果: 第二種,使用stuff將最後的逗號去掉 結果: ...
表A中id與表B中aid為一對多的關係
例如:
表A:
id | name |
a1 | tom |
a2 | lily |
a3 | lucy |
表B:
id | aid | value |
b1 | a1 | B1 |
b2 | a1 | B2 |
b3 | a2 | B3 |
b4 | a3 | B4 |
b5 | a2 | B5 |
b6 | a3 | B6 |
b7 | a3 | B7 |
使用for xml path('') 和stuff合併顯示多行數據到一行中 :
第一種,不使用stuff,結果如下:
select id, [val]=( select [value] +',' from tb as b where b.id = a.id for xml path('') ) from tb as a group by id
結果:
id | val |
a1 | B1,B2, |
a2 | B3,B5, |
a3 | B4,B6,B7, |
第二種,使用stuff將最後的逗號去掉
select id, [val]=stuff(( select ','+[value] from tb as b where b.id = a.id for xml path('')),1,1,'') from tb as a group by id
結果:
id | val |
a1 | B1,B2 |
a2 | B3,B5 |
a3 | B4,B6,B7 |