Вот мои данные макета:
Группа:
MAINGROUP SUBGROUP
1 A
2 A
3 A
1 B
2 B
3 C
1 D
2 D
3 D
2 E
3 E
Я пытаюсь написать запрос, который будет возвращать мне по одной строке на каждую подгруппу, с одним полем для каждой MAINGROUP, отображающим номер группы. Если подгруппа не имеет подходящей группы, я хочу, чтобы это поле группы было NULL.
Вот что я хочу:
Subgroup G1 G2 G3
A 1 2 3
B 1 2
C 3
Вот мой запрос:
SELECT
g.subgroup AS Subgroup,
1.maingroup AS G1,
2.maingroup AS G2,
3.maingroup AS G3,
FROM Groups g
LEFT JOIN(
SELECT maingroup, subgroup
FROM Groups
WHERE maingroup = 1
) 1
ON g.subgroup=1.subgroup
AND g.maingroup=1.maingroup
LEFT JOIN(
SELECT maingroup, subgroup
FROM Groups
WHERE maingroup = 2
) 2
ON g.subgroup=2.subgroup
AND g.maingroup=2.maingroup
LEFT JOIN(
SELECT maingroup, subgroup
FROM Groups
WHERE maingroup = 3
) 3
ON g.subgroup=3.subgroup
AND g.maingroup=3.maingroup
WHERE g.subgroup IN ('A','B','C')
И вот что я получаю:
Subgroup G1 G2 G3
A 1
A 2
A 3
B 1
B 2
B
C
C
C 3
Любая помощь и советы очень ценятся.