在单行显示所有的子值,分开,它有相同的父母ID

问题描述:

我想要一个简单的SQL脚本,以满足以下要求。数据可能会在未来增加,并且不是静态的。所以我需要动态查询。有人请帮助我。在单行显示所有的子值,分开,它有相同的父母ID

我有这样

input

数据和输出应该是这样的。

output

+1

MySQL和SQL数据库是非常不同的数据库引擎,将在非常不同的方式解决这个特定的问题。你在使用哪一个?此外,这里发布的链接或图片的样本数据和输出,而不是文本,这是非常粗鲁的。这也使得你不太可能得到答案,因为不是每个人都会看到你的图像。最后,你要求做的事情被认为是关系数据库的糟糕做法。关系数据库处理记录;应用程序可以在需要时汇总csv数据。 –

+0

嘿乔尔,谢谢你的回复。首先我使用SQL。我需要SQL代码。并注册图片,我很新的发布问题在这里。我不知道如何以表格格式显示我的数据。因此我使用了这些图像。 – Akhil

+0

**哪个** Sql?有不止一种方言,你的问题的答案很大程度上取决于你需要哪种方言(MySql使用group_concat(),而Sql Server 2008和更高版本可以使用Stuff())。对于数据...尽力而为。我们可以帮助编辑格式,但在这种情况下图像总是**更差。 –

试试这个使用的东西()在MSSQL服务器

;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 
+0

感谢您的回复@ Srini131。但我的数据是动态的。 – Akhil

+0

您是否将数据保存在物理表格中?如果是这样用您的物理表名称替换Cte查询将工作 – 2017-08-29 13:26:40

+0

谢谢@ Srini131。得到它了 – Akhil