SQL 过滤在 where 子句中使用 case
Posted
技术标签:
【中文标题】SQL 过滤在 where 子句中使用 case【英文标题】:SQL Filtering using case when in where clause 【发布时间】:2021-03-11 11:46:51 【问题描述】:我需要排除下表中的最后一行:
dim11 dim12 amount1
NULL 1 200
NULL 2 300
Y 3 100
N 3 100
我想得到 amount1 的总和,其中 dim12 在 (1,2,3) 中,但只有 dim12 =3 有 dim 11 = 'Y' 而不是 = 'N'。
SELECT
SUM(AMOUNT1)
FROM table1
WHERE dim12 in (1,2,3)
总结:我想排除所有dim12 = 3和dim11 'Y'
Current Output: 700
Expected Output: 600
我需要在 Where 子句中使用 CASE 吗?提前谢谢你。
【问题讨论】:
【参考方案1】:其中 dim12 在 (1,2,3) 中,但只有 dim12 =3 具有 dim 11 = 'Y' 而不是 = 'N'。
这听起来像:
where dim12 in (1, 2) or (dim12 = 3 and dim11 = 'Y')
如果您想要一个条件总和 - 比如说因为您还有其他列 - 然后使用:
select sum(case when dim12 in (1, 2) or dim11 = 'Y' then amount end)
from t
where dim12 in (1, 2, 3)
【讨论】:
以上是关于SQL 过滤在 where 子句中使用 case的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL 不同的 where 子句与 case when