我已经尝试了一些试验,但还是无法弄明白。任何帮助将不胜感激。
我有一张如下表格。
LocationID Project Name
1 A,A
1 A
1 A,B,C
1 A,C
1 B,C
1 C
2 A
2 C,D,E
2 E,F
2 F
3 G,H
3 H
我正在寻找的结果是。它会删除所有重复项,并仅保留具有关联ID的不同值。
LocationID Project Name
1 A
1 B
1 C
2 A
2 C
2 D
2 E
2 F
3 G
3 H
我试着计算逗号的数量(len(替换(@ProjectNames,','))
中的分割功能然而,仍然没有运气..任何帮助将不胜感激。谢谢。
答案 0 :(得分:4)
declare @T table(LocationID int, PName varchar(50))
insert into @T values
(1, 'A,A'),
(1, 'A'),
(1, 'A,B,C'),
(1, 'A,C'),
(1, 'B,C'),
(1, 'C'),
(2, 'A'),
(2, 'C,D,E'),
(2, 'E,F'),
(2, 'F'),
(3, 'G,H'),
(3, 'H')
select distinct
T.LocationID,
r.value('.', 'varchar(50)') as [Project Name]
from @T as T
cross apply
(select cast('<r>'+replace(PName, ',', '</r><r>')+'</r>' as xml)) as x(x)
cross apply
x.nodes('r') as r(r)
答案 1 :(得分:0)
尝试选择distinct。
如果使用mysql,可以使用group_concat()函数重新组合不同的值。