与列表(,)相同的id的SQL行值

时间:2015-09-02 10:17:48

标签: sql sql-server

我有这样的表:

id  |  code
111 |  IL
111 |  IN
222 |  UK
222 |  IN

我想要这个:

id  |  path
111 |  IL,IN
222 |  UK,IN

并且更愿意计算不同路径中的不同ID,谢谢

1 个答案:

答案 0 :(得分:1)

SQL-Server 中,您可以执行以下操作:

样本日期

DECLARE @Tbl TABLE(id INT, code VARCHAR(40))
INSERT INTO @Tbl VALUES (111,'IL'),(111,'IN'),(222,'UK'),(222,'IN')

<强> QUERY

SELECT  id
       ,STUFF((SELECT ',' + CAST(code AS VARCHAR(10)) [text()]
               FROM @Tbl 
               WHERE id = t.id
               FOR XML PATH(''), TYPE)
       .value('.','NVARCHAR(MAX)'),1,1,' ') path
FROM @Tbl t
GROUP BY id

<强>输出

id   path
111  IL,IN
222  UK,IN