加倍时解决案例

Resolving Case When Doubling Up

我一直在到处寻找这个问题的答案,但似乎找不到答案。如果这是重复的,我真的很抱歉,但我真的需要一些帮助

我有一个非常简单的 case when 语句,它按预期工作

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) 的建议,但是这个错误。我用了一个合并,这是行不通的。我可能遗漏了一些非常明显的东西!

澄清一下,它不容易放在 where 子句中,因为我的存储过程中有很多这样的子句。

select语句的基本部分如下-

作为我的select声明

Table1.Id AS NAME

,Count(ConID) OVER (PARTITION BY Table1.Id2) AS COUNTID

,Case When Statement AS CLAUSE

很容易添加一个 WHERE 子句:

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

但是,这样做会更改用于 window 函数的数据。

改为使用子查询:

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