это будет первый вопрос, который я разместил здесь, так что извините за любые непреднамеренные ошибки в этикете доски.
В моем текущем проекте я взял большую ненормализованную таблицу и разбил ее на четыреотдельные, нормализованные таблицы.Моя конечная цель, к которой я обращаюсь к этой доске, - создать представление, которое имитирует ненормализованную таблицу для обратной совместимости.
Чтобы предоставить упрощенный снимок моего сценария, суть того, что я 'Я пытаюсь сделать ложь в двух таблицах:
ASSOC_ROLE ASSOCIATE
---------- ----------
assoc_id (fk) assoc_id (pk)
role_id (fk) last_name
org_nbr (fk)
Так что, если я выдам следующий запрос ...
SELECT Assoc_Role.org_nbr, Assoc_Role.assoc_id, Associate.last_name, Assoc_Role.role_id
FROM Assoc_Role INNER JOIN
Associate ON Assoc_Role.assoc_id = Associate.assoc_id
WHERE Assoc_Role.org_nbr = '1AA'
... Я получу следующий набор результатов
org_nbr assoc_id last_name role_id
------- -------- --------- -------
1AA 1447 Cooper 1
1AA 1448 Collins 3
1AA 1448 Collins 4
1AA 1448 Collins 5
1AA 1449 Lynch 6
В конечном счете, представление, которое я хотел бы построить, выглядело бы примерно так:
org_nbr role1_ID role1_name role2_ID role2_name role3_ID role3_name role4_ID role4_name role5_ID role5_name role6_ID role6_name
------- -------- ---------- -------- ---------- -------- ---------- -------- ---------- -------- ---------- -------- ----------
1AA 1447 Cooper NULL NULL 1448 Collins 1448 Collins 1448 Collins 1449 Lynch
Сначала я пытался использовать команду PIVOT, но, насколько я понимаю, PIVOT требует какой-тоагрегации, и это не соответствует моему сценарию.Я также поэкспериментировал с командой CASE в предложении SELECT, но это не сводит мой результат к одной записи.
Надеюсь, кто-то сможет пролить свет на то, как я могу это сделать.Дайте мне знать, если кому-то нужна дополнительная информация.Спасибо!
Скот