【发布时间】:2014-09-15 07:56:41
【问题描述】:
我在 SQL 中有一个带有多个条件的 Case When 语句,我需要以正确的顺序评估这些条件。 这是我的代码。
SELECT company_id,
MIN(CASE WHEN number_of_orders >= 10 THEN order_month
WHEN number_of_orders >= 1 AND number_of_orders < 10 THEN order_month
ELSE NULL END) AS first_month_with_many_orders
FROM monthly_orders
我需要先评估 number_of_orders >=10 的第一个条件。这段代码似乎没有实现这一点,因为我有一些公司的月份满足这两个条件,所以它返回满足第一个条件的最小月份。但是,我真正想要的是 >=10 个订单的最小月份,我只希望第二个条件适用于没有月份超过 10 个订单的公司。
那么我怎样才能让第一个条件被评估,然后只有在它失败时才继续第二个条件呢?
【问题讨论】:
-
这是关于 SQL-Server 还是其他 DBMS?
-
您的两个条件都返回
order_month(THEN子句)。 -
你能输入一些虚拟数据并告诉我们什么是正确的输出吗?
标签: sql if-statement case-when