我有一个问题。
我需要在一个字段中加入列的值,用分号分隔。 我使用XML Path,但响应时间很长。
这是我的表:
ID COLOR
1 WHITE
1 RED
2 BLACK
2 RED
这是我需要输出的内容:
ID COLORS
1 WHITE; RED
2 BLACK; RED
我该怎么做?
真的,我的代码是这样的:
SELECT *
FROM
Client A
OUTER APPLY (SELECT Origen + '; '
FROM ( SELECT DISTINCT F.IdSC, C.Origen
FROM SC F
LEFT JOIN OrigenSC B ON F.IdSC = B.IdSC
LEFT JOIN Origen C ON B.IdOrigen = C.IdOrigen
) D
WHERE D.Id = A.IdSC
ORDER BY D.Origen
FOR XML PATH('')) H (Origen)
答案 0 :(得分:0)
鉴于上面的COLORS示例,您可以尝试以下方法:
create table Colors
(
ID INT,
COLOR varchar(32)
)
INSERT INTO Colors values(1, 'WHITE')
INSERT INTO Colors values(1, 'RED')
INSERT INTO Colors values(2, 'BLACK')
INSERT INTO Colors values(2, 'RED')
INSERT INTO Colors values(3, 'GREEN')
INSERT INTO Colors values(3, 'RED')
WITH UniqueColors AS ( SELECT DISTINCT ID FROM Colors )
SELECT
ID,
STUFF(
( SELECT '; '+COLOR
FROM Colors
WHERE ID = UniqueColors.ID
FOR XML PATH('')
)
, 1, 2, ''
) AS [ColorList]
FROM UniqueColors
这是从SO上的其他一些例子中得到的。