首页 > 解决方案 > SQL - 两个条件都匹配因此计数

问题描述

我试图将我的搜索从数据库中拆分为多个条件,但是我似乎提取了错误的数据。

sum(case when date between '2019-12-01' and '2019-12-31' then 1 else 0 end) Dec19,
sum(case when service like 'A%' or  service like 'B%' and date between '2019-12-01' and '2019-12-31' then 1 else 0 end) DecAB,
sum(case when service like 'C%' or service like 'D%' and date between '2019-12-01' and '2019-12-31' then 1 else 0 end) DecCD,
sum(case when service like 'E%' or service like 'E%' or service like 'F%' and date between '2019-12-01' and '2019-12-31' then 1 else 0 end) DecEF,

然而,现在手头的问题是......虽然这个 SQL 脚本可以运行,但底部 3 行的总和超过了第一行。这不应该是这样,因为我只是想拆分第一行的总数以便更好地进行详细分析。

如果我不清楚,我正在尝试查找 12 月份服务 A 和 B 的预订总数,依此类推,到目前为止。而第一次是预订总数。

标签: sql

解决方案


我会在 OR 语句周围加上括号,以确保正确处理它们(service like 'A%' or service like 'B%')以及 AND 条件。现在它说“给我所有服务,如'A%',但只提供日期期间的服务,如'B%'”

而且你的最后一行有一个重复的 OR。


推荐阅读