Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
case语句中的多个值用作where子句sql oracle的右操作数_Sql_Oracle_Oracle11g_Oracle12c - Fatal编程技术网

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)”,我使用了“和日期