我正在尝试将多个if if语句插入到SQL中的where子句中。
例如,如果location = 1,则使用日期范围keydate> = '09 / 30/13 23:00:00.000'和keydate< '10 / 31/13 23:00:00.000',如果location = 2则为另一个日期范围。
我之所以这样做是因为我对不同的时区有很多疑问,我想将所有这些问题合并为一个。以下是查询的简化示例。
我已经阅读过使用case语句和布尔逻辑作为解决类似问题的方法,但是无法弄清楚这是否适用于多个标准(即多个办公室ID)
由于我的经验不足,编写语法也很有挑战性。
select sum(r.revenue) as revenue
from customer_stats
where cus.office_id = '1' --would like to insert "if" cus.office_id = 1 then use keydate
and keydate >= '09/30/13 23:00:00.000' and keydate < '10/31/13 23:00:00.000'
答案 0 :(得分:0)
这就是你如何嵌套你的where子句。
select sum(r.revenue) as revenue
from customer_stats
where
(
cus.office_id = '1'
and keydate >= '09/30/13 23:00:00.000'
and keydate < '10/31/13 23:00:00.000'
)
OR
(
cus.office_id = '2'
and keydate >= '08/30/13 23:00:00.000'
and keydate < '09/31/13 23:00:00.000'
)
答案 1 :(得分:0)
您可以使用“解码”功能。这是语法
DEOCDE(expr,s1,r1,s2,r2,....., default)
因此,如果表达式'expr'等于s1,它将返回r1;对于s2,r2;如果没有匹配,它将考虑默认值。这是您可以在查询中使用的示例代码段...
DECODE(X,'A',50,'B',10,50)
因此,如果X ='A',则上面的片段将返回50; 10如果X ='B'Orelse默认为50。 希望这会有所帮助:)