case语句中的多个值用作where子句sql oracle的右操作数
我需要你的帮助来解决一个问题,我用谷歌搜索了一下,但没能找到具体的答案。我们有一个从周一到周五运行的作业,现在正常运行。当在周一运行时,我们通常会得到周五的报告,而对于所有其他天,报告都是前一天生成的。此行为是通过以下查询实现的,字段选择是任意的:case语句中的多个值用作where子句sql oracle的右操作数,sql,oracle,oracle11g,oracle12c,Sql,Oracle,Oracle11g,Oracle12c,我需要你的帮助来解决一个问题,我用谷歌搜索了一下,但没能找到具体的答案。我们有一个从周一到周五运行的作业,现在正常运行。当在周一运行时,我们通常会得到周五的报告,而对于所有其他天,报告都是前一天生成的。此行为是通过以下查询实现的,字段选择是任意的: select field1, field2... from table where date = ( case when TO_CHAR(TRUNC(sysdate), 'DY') = 'MON' then TRUNC(sysd
select field1, field2... from table where date = (
case when TO_CHAR(TRUNC(sysdate), 'DY') = 'MON' then TRUNC(sysdate - 3)
else (TRUNC(sysdate-1)) END);
现在要求已经改变,我们需要在星期一运行时显示所有三天(星期五、星期六和星期日)的结果
我无法找到一个方法来完成这件事。非常感谢您的帮助。我认为,在条件中将
=
符号更改为=
,并添加另一个符号以排除当前日期就足够了:
select field1, field2... from table
where date >= (
case when TO_CHAR(TRUNC(sysdate), 'DY') = 'MON' then TRUNC(sysdate - 3)
else (TRUNC(sysdate-1)) END)
and date < TRUNC(sysdate);
选择字段1、字段2。。。从桌子上
其中日期>=(
当字符(TRUNC(sysdate),'DY')='MON'然后是TRUNC(sysdate-3)时的情况
其他(TRUNC(sysdate-1))结束
和日期
在WHERE
子句中,通常最好使用和/或
而不是case
表达式。请回答您的问题,并根据该数据添加一些和预期的输出。请(你的问题-不要在评论中发布代码或附加信息)好的,这似乎符合逻辑,让我试试看,看它是否完成了我的工作。这显然是一个会被接受的答案。谢谢你的快速转身!逻辑似乎起作用。我所做的唯一更改是最后一部分,而不是“和日期TRUNC(sysdate)”,我使用了“和日期