2

我已经尝试了一些试验,但还无法弄清楚。任何帮助,将不胜感激。

我有一张如下表。

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(replace(@ProjectNames, ',')) 来计算逗号的数量

使用来自http://www.logiclabz.com/sql-server/split-function-in-sql-server-to-break-comma-separated-strings-into-table.aspx的拆分函数

但是,仍然没有运气..任何帮助将不胜感激。谢谢你。

4

2 回答 2

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)
于 2011-04-11T08:00:31.197 回答
0

尝试选择不同的。

如果你使用 mysql ,你可以使用 group_concat() 函数来重新组合不同的值。

于 2011-04-11T07:57:00.593 回答