如何解决SQL 过滤使用 case when in where 子句
我需要排除下表中的最后一行:
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,3)
总结:我想排除所有的 dim12 = 3 和 dim11 'Y'
Current Output: 700
Expected Output: 600
我需要在 Where 子句中使用 CASE 吗?提前致谢。
解决方法
其中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,3)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。