объединение строк в один столбец в sql - PullRequest
0 голосов
/ 29 мая 2019

У меня есть список строк с именем лидера и именем менеджера, но эти записи появляются после объединения нескольких таблиц

SELECT DISTINCT 
    (leader.name), manager.Name 
FROM 
    ref, leader, orgList, manager, modules 
WHERE 
    leader.id = orgList.leaderCode
    AND orgList.dept = ref.id
    AND orgList.manager = manager.id
    AND orgList.id = modules.orgListId
    AND ref.id = 'xyzzz123'
    AND ref.month = 'august'
    AND modules.year = '2018'

Я получаю такой результат

leader_name       manager_name
---------------------------------
 John              Jim
 John              Hiko
 John              Sevu
 John              Celi
 Kerst             Newon
 Kerst             Dollace

Но я на самом деле хочу такой результат

leader_name       manager_name
------------------------------------
John              Jim;Hiko;Sevu;Celi
Kerst             Newon;Dollace

Я пробовал сводку и другие вещи, но это работает только с одной таблицей.

1 Ответ

2 голосов
/ 29 мая 2019

Проверьте это-

Примечание: Использовать стандартный JOIN вместо запятых JOIN

WITH CTE(leader_name,manager_name)
AS
(
    SELECT DISTINCT 
        (leader.name) leader_name, manager.Name  manager_name
    FROM 
        ref, leader, orgList, manager, modules 
    WHERE 
        leader.id = orgList.leaderCode
        AND orgList.dept = ref.id
        AND orgList.manager = manager.id
        AND orgList.id = modules.orgListId
        AND ref.id = 'xyzzz123'
        AND ref.month = 'august'
        AND modules.year = '2018'
)


SELECT 
leader_name ,
manager_name = 
    STUFF
    (
            (
                SELECT ';' + manager_name 
                FROM CTE B
                WHERE A.leader_name = B.leader_name
                FOR XML PATH ('')), 1, 1, ''
    )
FROM CTE A
GROUP BY leader_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...