У меня два запроса.
Первый запрос выглядит так:
SELECT subject_id, period, marks FROM subject_details;
Возвращает следующий набор данных:
subject_id period marks
---------- ------ -----
1 Jan 50
1 Feb 40
1 Mar 30
2 Jan 60
Второй запрос следующий:
SELECT subject.subject_id, periods.month, subject.marks FROM
(SELECT subject_id, period, marks FROM subject_details) subject,
(WITH PERIOD_COUNTER AS (
SELECT LEVEL-1 AS ID
FROM DUAL
CONNECT BY LEVEL <= 6
)
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('01/01/2011', 'DD/MM/RRRR'), ID),'Mon')
month FROM PERIOD_COUNTER) periods
WHERE subject.period (+) = periods.month;
subject_id period marks
---------- ------ -----
1 Jan 50
1 Feb 40
1 Mar 30
2 Jan 60
null Apr null
null May null
null Jun null
Как я могу написать запрос, который дал бы мне следующий набор результатов (Цель состоит в том, чтобы в основном создать набор результатов, который заполняет данные за пропущенные месяцы для каждого subject_id.):
subject_id period marks
---------- ------ -----
1 Jan 50
1 Feb 40
1 Mar 30
1 Apr null
1 May null
1 Jun null
2 Jan 60
2 Feb null
2 Mar null
2 Apr null
2 May null
2 Jun null