Петля для вращения матрицы (sql) - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть родительская / дочерняя матрица

Parent_col_ID  Child_col_ID
    1                2
    2                3
    3                4
    3                5

Мне нужно изменить его на

Main_Parent Child1 Child2 Child3
  1            2     3      4
  1            2     3      5

Как я могу сделать это в SQL?

1 Ответ

0 голосов
/ 29 ноября 2018

Вы можете использовать LEFT JOIN и NOT EXISTS().Вот ваш запрос:

--DROP TABLE CollEgues
--GO
CREATE TABLE CollEgues
(
     Parent_col_ID  int
     ,Child_col_ID  int
);

INSERT INTO CollEgues VALUES(1,2),(2,3),(3,4),(3,5);

SELECT   Main.Parent_col_ID     AS Main_Parent   
        ,Main.Child_col_ID      AS Child1
        ,Child1.Child_col_ID    AS Child2
        ,Child2.Child_col_ID    AS Child3
FROM CollEgues AS Main
    LEFT JOIN  CollEgues AS Child1 ON Main.Child_col_ID = Child1.Parent_col_ID
    LEFT JOIN  CollEgues AS Child2 ON Child1.Child_col_ID = Child2.Parent_col_ID
    WHERE NOT EXISTS (SELECT 1 FROM CollEgues C WHERE Main.Parent_col_ID=C.Child_col_ID);
...