如何从下面更改表格的输出:
A,1 A,2 A,3 B,1 B,2 C,1 C,2 D,1 D,2 D,3 D,4
对此:
A,1,2,3 B,1,2 C,1,2 D,1,2,3,4
我认为PIVOT可能有效,但这需要一个聚合。欢迎任何建议。
编辑:这也可能只使用char数据类型吗?我的初始数据集大约是1000行
答案 0 :(得分:2)
这应该适合你。
DECLARE @Test TABLE (Col1 VARCHAR(10))
INSERT INTO @Test
VALUES ('A,1'),
('A,2'),
('A,3'),
('B,1'),
('B,2'),
('C,1'),
('C,2'),
('D,1'),
('D,2'),
('D,3'),
('D,4');
WITH cte_Split
AS (
SELECT SUBSTRING(Col1, 1, CHARINDEX(',', Col1) - 1) AS Col1_A,
SUBSTRING(Col1, CHARINDEX(',', Col1) + 1, LEN(Col1)) AS Col1_B
FROM @Test
)
,cte_Group
AS (
SELECT a.Col1_A,
STUFF((SELECT ',' + Col1_B
FROM cte_Split AS b
WHERE b.Col1_A = a.Col1_A
FOR XML PATH ('')), 1, 1, '') AS Col1_c
FROM cte_Split AS a
GROUP BY a.Col1_A
)
SELECT Col1_A+','+Col1_c
FROM cte_Group