У меня есть родительская / дочерняя матрица
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?
Что делать, если у вас 10 детей на одного «главного родителя» и только 3 ребенка на другого? Есть ли у вас верхний предел количества детей?


Вы можете использовать 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);
Какой продукт СУБД вы используете? «SQL» - это просто язык запросов, а не имя конкретного продукта базы данных. Добавьте тег для продукта базы данных, который вы используете
postgresql,oracle,sql-server,db2, ...