在where子句中使用case进行SQL筛选

在where子句中使用case进行SQL筛选,sql,case,where-clause,case-when,Sql,Case,Where Clause,Case When,我需要排除下表中的最后一行: dim11 dim12 amount1 NULL 1 200 NULL 2 300 Y 3 100 N 3 100 我想得到amount1的和,其中dim12在(1,2,3)中,但只有dim12=3,dim11=Y,而不是in=N SELECT SUM(AMOUNT1) FROM table1 WHERE dim12 in (1,2,3) 小结:我想排除所有dim12=3和dim11“Y” 我需要在Where子句中使

我需要排除下表中的最后一行:

dim11   dim12   amount1
NULL    1   200
NULL    2   300
Y   3   100
N   3   100
我想得到amount1的和,其中dim12在(1,2,3)中,但只有dim12=3,dim11=Y,而不是in=N

SELECT
 SUM(AMOUNT1)
FROM table1
WHERE dim12 in (1,2,3)
小结:我想排除所有dim12=3和dim11“Y”

我需要在Where子句中使用CASE吗?先谢谢你

其中dim12 in(1,2,3),但只有dim12=3具有DIM11='Y'而不是in='N'

SELECT
 SUM(AMOUNT1)
FROM table1
WHERE dim12 in (1,2,3)
这听起来像:

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)
谢谢!:)干杯