我有一个包含以下值的表:
NAME Value1 Value2
--------------------------------
N1 1 10
N1 2 11
N2 3 12
N2 4 13
N2 5 14
我想创建以下结果:
NAME Value1 Value2_CSV
-----------------------------------
N1 1 10,11
N1 2 10,11
N2 3 12,13,14
N2 4 12,13,14
N2 5 12,13,14
有人可以帮忙吗? 提前致谢
答案 0 :(得分:3)
这是聚合字符串连接的变体 - 但没有聚合。
我会把它写成:
select t.name, t.value1,
stuff((select ',' + cast(t2.value2 as varchar(8000))
from table t2
where t2.name = t.name
order by t2.value1
for xml path ('')
), 1, 1, '') as value2_csv
from table t;
答案 1 :(得分:0)
此查询会有所帮助。
DECLARE @Table AS TABLE
(
NAME VARCHAR(100),
Value1 Int,
Value2 Int
)
INSERT INTO @Table
SELECT 'N1', 1 , 10 UNION
SELECT 'N1', 2 , 11 UNION
SELECT 'N2', 3 , 12 UNION
SELECT 'N2', 4 , 13 UNION
SELECT 'N2', 5 , 14
SELECT NAME, Value1, Value2_CSV =
STUFF((SELECT ',' + CAST(B.Value2 as VARCHAR(MAX))
FROM @Table AS B WHERE B.NAME = A.NAME
GROUP BY B.Value2 for XML PATH (''), TYPE)
.value('.', 'varchar(max)') ,1,1,'')
FROm @Table AS A