获取列的列表,以显示与其相关的列旁边的列

时间:2009-11-16 17:35:41

标签: sql sql-server-2005

我有一个像这样的表格设置:

[ReferredID], [Name]

1, Irwin

2, Marc

1, Johnny

5, Jackie

2, Perry

1, Reuben

我正在尝试获得一个可以产生此问题的查询:

[ReferredID], [List]

[1], [Irwin, Johnny, Reuben]

[2], [Marc, Perry]

[5], [Jackie]

你能帮我找到合适的查询来产生这些结果吗?

2 个答案:

答案 0 :(得分:3)

WITH    mytable (ReferredID, Name) AS
        (
        SELECT  1, 'Irwin'
        UNION ALL
        SELECT  2, 'Marc'
        UNION ALL
        SELECT  1, 'Johnny'
        UNION ALL
        SELECT  5, 'Jackie'
        UNION ALL
        SELECT  2, 'Perry'
        UNION ALL
        SELECT  1, 'Reuben'
        )
SELECT  ReferredID,
        (
        SELECT  CASE ROW_NUMBER() OVER (ORDER BY Name) WHEN 1 THEN '' ELSE ', ' END + Name AS [text()]
        FROM    mytable mi
        WHERE   mi.ReferredID = mo.ReferredID
        FOR XML PATH('')
        ) List
FROM    (
        SELECT  DISTINCT ReferredID
        FROM    mytable
        ) mo

答案 1 :(得分:1)

您可能能够使用特定的SQL风格,但我不认为它在任何SQL标准中都受支持。

如果您正在从某个程序进行SQL查询,那么最好只做一个简单的订单,然后在代码中对记录进行分组。

在python中,类似于:

results = dict()
for r in rs:
    if r.ReferrerId not in results:
        results[r.ReferredId] = list()
    results[r.ReferredId].append(r.Name)