0

我正在编写一份报告,该报告作为 select 子句的一部分将列出一个日期(salesdate)。在 where 子句中还使用 Salesdate 来设置报告所基于的最早销售日期(例如,我希望报告列出销售日期 > 2012-11-01 的所有销售)。但是,此日期将根据报告中的另一个字段而改变。例如,对于 item = item1,我不想要早于 2012-10-01 的任何记录,但对于 item = item2,我不想要早于 2012-11-01 的任何记录。我想到了这个:

当 item = item1 then salesdate > 2012-10-01 else case when item = item2 then salesdate > 2012-11-01 在 select 和 where 子句中没有太大的信心,当然它不起作用(case not期待一个条件)。有什么建议么?谢谢!

4

1 回答 1

1

如果我正确理解了您的问题,我认为您可以使用 WHERE 子句中的复合谓词来完成此操作。

例如:

...    WHERE (Item = Item1 AND SalesDate > '2012-10-01') OR (Item = Item2 AND SalesDate > '2012-11-01')

这实际上会提供更好的性能,因为 SQL 优化器不必在 WHERE 子句中整理 case 语句。

高温高压

于 2013-03-26T13:29:57.663 回答