我一直在寻找答案,我似乎无法找到答案。如果这个重复,我真的很道歉,但我真的需要一些帮助
我有一个非常简单的case语句,它按预期工作
CASE WHEN Table.Expirydate < @Today AND CON.Column IS NULL
THEN count(ContactID) OVER (PARTITION BY column,type ) END
然而,它产生了两行
结果
NAME COUNTID CLAUSE
A 10 5
A 10 NULL
B 1 1
B 1 NULL
理想情况下,我想删除带有空值的行 -
NAME COUNTID CLAUSE
A 10 5
B 1 1
我尝试过使用CASE WHEN MAX(CASE WHEN END)
的建议,但这个错误。我使用了coalesce这不起作用。可能有一些我很想念的东西!
只是为了澄清它不容易放入where子句,因为我在我的存储过程中有很多这些。
select语句的基本部分如下 -
作为我的选择声明
Table1.Id AS NAME
,Count(ConID) OVER (PARTITION BY Table1.Id2) AS COUNTID
,Case When Statement AS CLAUSE
答案 0 :(得分:0)
很容易只添加一个WHERE
子句:
WHERE Table.Expirydate < @Today AND CON.Column IS NULL
但是,这样做会改变用于窗口函数的数据。
相反,请使用子查询:
select t.*
from (<your query here>) t
where <expr> is not null;