我有一个名为 Test1 的表格如下:
A B C
One ABC,DEF,GHI,JKL 4
Two AAA,GGG,RTG 3
Three A,B,C,D 4
One 0
Two TE,YT 2
我想要输出如下:
A B C
One ABC 6
One DEF 6
One GHI 6
One JKL 6
One 6
Three A 4
Three B 4
Three C 4
Three D 4
Two 7
Two AAA 7
Two GGG 7
Two RTG 7
我尝试了以下查询但是我在输出中出现问题,分区为。
SELECT A,SUM(C) OVER (PARTITION BY A),left(d, charindex(',', d + ',')-1) as "B" from
(SELECT *, substring(B, number, 3000) as d from Test1 A left join
(SELECT distinct number from master.dbo.spt_values where number between 1 and 200) B
on substring(',' + B, number, 1) = ',') t
使用上面我得到以下内容:
A C B
One 18 ABC
One 18 DEF
One 18 GHI
One 18 JKL
One 18
Three 16 A
Three 16 B
Three 16 C
Three 16 D
Two 13
Two 13 AAA
Two 13 GGG
Two 13 RTG
我正在尝试为B列中的多个条目创建行,并使用逗号分隔,并根据组添加C列值。 任何帮助都会非常值得赞赏。
答案 0 :(得分:0)
只需在网上寻找一个split()
功能(你可以通过谷歌搜索“sql server split”得到一堆点击。)。
然后你可以做类似的事情:
select t.a, t.c, s.b
from test t outer apply
dbo.split(t.b) as s(b);
还有其他方法。 。 。使用XML或使用递归CTE。