Получение списка столбцов для отображения рядом со столбцом, к которому они относятся - PullRequest
3 голосов
/ 16 ноября 2009

У меня есть таблица настройки так:

[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 ]

3 голосов
/ 16 ноября 2009
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 голос
/ 16 ноября 2009

Возможно, вы сможете сделать это с конкретным видом 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...