我试图在SQL中的where子句中插入多个if语句。如果位置= 1,则使用日期范围keydate> = '09/30/13 23:00:00.000'和关键日期<'10/31/13 23:00:00.000',如果位置= 2则是另一个日期范围。在SQL中的where子句中使用多个if语句
我想这样做的原因是因为我对不同的时区有很多查询,我想将所有这些合并为一个。以下是该查询的简化示例。
我读过有关使用情况报表和布尔逻辑的方式来解决类似的问题,但不能弄清楚这是否会为多种标准(即多个办公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'
感谢您的快速回答!我现在会试试这个。测试多个办公室之前的一个问题是:这会成倍增加执行时间,还是会线性增加执行时间? – user2996849
它不会是指数。只要确保将office_id和keydate编入索引并且查询应该非常快。 –
hm我在两个小办公室尝试了这种方法,并在30分钟后停止了查询。我大大缩小了标准,并使用OR的工作,但如果我使用了所有办公室ID,我认为查询需要几天时间才能完成,这是行不通的。 – user2996849