我有一个像这样的表格设置:
[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]
你能帮我找到合适的查询来产生这些结果吗?
答案 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)