加倍时解决案件

时间:2017-12-15 11:22:24

标签: sql sql-server-2012 case-when

我一直在寻找答案,我似乎无法找到答案。如果这个重复,我真的很道歉,但我真的需要一些帮助

我有一个非常简单的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

1 个答案:

答案 0 :(得分:0)

很容易只添加一个WHERE子句:

WHERE Table.Expirydate < @Today AND CON.Column IS NULL

但是,这样做会改变用于窗口函数的数据。

相反,请使用子查询:

select t.*
from (<your query here>) t
where <expr> is not null;