显示单行中的所有子值,分隔的具有相同的父ID

时间:2017-08-29 13:14:48

标签: sql sql-server sql-server-2014

我想要一个简单的sql脚本来满足以下要求。而且未来的数据可能会增加而且不是静态的。所以我需要动态查询。有人请帮帮我。

我有这样的数据

input

,输出应该是这样的。

output

1 个答案:

答案 0 :(得分:0)

使用MSSql服务器中的Stuff()

尝试此操作
;With cte(ParentId, ChidId)
    AS
    (
    SELECT 1,'a'     UNION ALL
    SELECT 1,'b'     UNION ALL
    SELECT 1,'123'   UNION ALL
    SELECT 2,'asd'   UNION ALL
    SELECT 2,'222'   UNION ALL
    SELECT 3,'kk'    UNION ALL
    SELECT 3,'ffh'   UNION ALL
    SELECT 4,'aaa'   UNION ALL
    SELECT 5,'fdhgf' UNION ALL
    SELECT 5,'fdddv'
    )
    SELECT parentid, 
           Stuff((SELECT DISTINCT ', ' + chidid 
                  FROM   cte i 
                  WHERE  i.parentid = o.parentid 
                  FOR xml path ('')), 1, 1, '') AS ChidId 
    FROM   cte o 
    GROUP  BY parentid