加倍时解决案例
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;
我一直在到处寻找这个问题的答案,但似乎找不到答案。如果这是重复的,我真的很抱歉,但我真的需要一些帮助
我有一个非常简单的 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;