【发布时间】:2018-05-29 14:31:43
【问题描述】:
我一直在到处寻找答案,但我似乎找不到答案。如果这是重复的,我真的很抱歉,但我真的需要一些帮助
我有一个非常简单的 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语句的基本部分如下-
作为我的选择声明
Table1.Id AS NAME
,Count(ConID) OVER (PARTITION BY Table1.Id2) AS COUNTID
,Case When Statement AS CLAUSE
【问题讨论】:
-
请阅读有关如何将问题作为问题 (stackoverflow.com/help) 的文档并继续适当地格式化您的问题(您的代码段应明确标记为这样)以提高可读性。
-
在 where 子句过滤器中使用大小写,例如 select * from abc where (1= CASE WHEN Table.Expirydate
-
case expression本身不能创建额外的行,提供完整的查询而不是小的 sn-ps。 -
你能用真实的列名在问题中显示整个实际查询吗?从您展示的部分很难将其粘在一起,第一个 sn-p 使用的列名与其他列名不同,
标签: sql sql-server-2012 case-when