我是该站点和 SQL 的新手。我需要一些关于案例表达的帮助。
要求如下:
我有一个表 T1 有两个日期列 - eff 和 disc;
第二个表 T2 有 2 个日期列 - 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
等等。
我不确定我们是否可以在单个案例表达式中获取/使用两列。
Oracle DB - 客户端版本:12.1.0.2.0
提前致谢!=> VPPG