【发布时间】:2020-12-07 16:26:40
【问题描述】:
我希望编写一条 SQL 语句来根据一周中的当前日期报告不同的轮次。
因此,如果当天是星期一,我希望报告显示有关“NOMN”、“EWM1”、“EWM2”和“SOMN”轮次的信息 - 但如果当天是星期二,我希望报告显示我在周三、周四、周五轮换 'NOTE'、'EWT1'、'EWT2'、'SOTE' 等等。
当前代码如下
SELECT
insp_route_feat.insp_route_code,
insp_route_feat.site_code,
insp_route_feat.plot_number,
insp_route_feat.officer_code,
max (inspection_feature.feature_insp_date) as Last_Inspection_Date,
case
when max (inspection_feature.feature_insp_date) >=trunc(SYSDATE,'DD') then 'Inspected'
else 'Not Completed' end as Assigned
FROM
insp_route_feat
inner join inspection_feature on insp_route_feat.site_code = inspection_feature.site_code and
insp_route_feat.plot_number = inspection_feature.plot_number
WHERE insp_route_feat.insp_route_code =
(CASE WHEN to_char(sysdate,'DY') = 'MON' THEN 'NOMN'
WHEN to_char(sysdate,'D') = 'TUE' THEN 'NOTE'
ELSE null END)
group by
insp_route_feat.insp_route_code,
insp_route_feat.site_code,
insp_route_feat.plot_number,
insp_route_feat.officer_code
我希望 WHERE 语句说的是类似
WHERE insp_route_feat.insp_route_code IN (
(CASE WHEN to_char(sysdate,'DY') = 'MON' THEN 'NOMN','EWM1','EWM2','SOMN'
WHEN to_char(sysdate,'D') = 'TUE' THEN 'NOTE','EWT2','EWT2','SOTE'
ELSE null END)
但是我知道编码是错误的,但希望这能让我知道我在追求什么。
【问题讨论】:
标签: sql oracle case where-clause