Я новичок на сайте и SQL.Мне нужна помощь с выражением регистра.
Требование следующее:
У меня есть таблица T1 с двумя столбцами даты - eff и disc;
Вторая таблицаT2 с двумя столбцами даты - on_date & off_date;
Я пытаюсь создать выражение с одним регистром, где я могу сравнить столбцы даты между таблицами и назначить значения на основе определенных условий.
Условия:
• Если даты T1.eff и T2.disc установлены по умолчанию, то есть T1.eff = 1/1/1970 и T2.disc = 1970
Then set set T1.eff=T2.on_date and T2.disc=T2.off_date
• Если T1.eff> T2.on_date и T1.disc> T2.off_date
Then set T1.disc=T2.Off_date.
• Если T1.eff
Then set T1.eff=T2.On_date.
• Если T1.eff T2.off_date
Then set T1.eff=T2.On_date and T1.disc=T2.Off_date
• Если T1.eff> T2.on_date и T1.disc
Then do not update eff, disc dates, insert as is.
Я начал писать выражение Case, и я застрял на том, как построить / записать блок;где мне нужно сравнить даты «eff» и «disc» как одно условие, а затем назначить соответствующее значение для «eff» и «disc» в одном выражении.
SELECT
CASE T1.EFF, T1.DISC
WHEN T1.EFF = TO_DATE('01/01/1970', 'MM/DD/YYYY') AND DISC = TO_DATE('01/01/1970', 'MM/DD/YYYY')
THEN T1.EFF = T2.ON_DATE AND T1.DISC = T2.OFF_DATE
WHEN T1.EFF > T2.ON_DATE AND T1.DISC > T2.OFF_DATE
THEN T1.EFF = T1.EFF AND T1.DISC = T2.OFF_DATE
WHEN T1.EFF < T2.OFF_DATE AND T1.DISC > T2.OFF_DATE
THEN T1.EFF = T2.ON_DATE AND T1.DISC = T2.OFF_DATE
WHEN T1.EFF > T2.ON_DATE AND T1.DISC < T2.OFF_DATE
THEN T1.EFF = T1.EFF AND T1.DISC - T1.DISC
END,
T2.ON_DATE, T2.OFF_DATE
FROM T2, T1
WHERE T1.A = T2.B
ETC.
Я не уверен, сможем ли мы получить / использовать два столбца в одном выражении.
Oracle DB - версия клиента: 12.1.0.2.0
Заранее спасибо!=> VPPG