TSQL计数'Where'条件

Cod*_*lus 15 t-sql conditional count distinct

如何实现以下psuedo-SQL语句的"含义":

COUNT(distinct id where attribute1 > 0)
Run Code Online (Sandbox Code Playgroud)

换句话说,我如何制作有条件的,不同的计数陈述?

谢谢!

I a*_*ica 38

好吧,如果您可以过滤整个查询,那么LittleBobbyTables已经为您提供了答案.如果没有,您可以像这样获得该列:

count(distinct case when attribute1 > 0 then id end) -- implicit null-else, iirc
Run Code Online (Sandbox Code Playgroud)

  • 我偶尔会对这种逻辑有合理的需求,并且它通常涉及同一SELECT中的多个聚合,例如"在FieldX不为null的情况下计数",然后在"FieldX为null的情况下计数"以相互比较计数,或"计数FieldY = 2"和"计算FieldY = 3"等,再次,比较计数.我认为这就是CodeKingPP所追求的.我喜欢这个解决方案,因为这是我在这些情况下通常做的事情,佳能和AndriyM之间的评论有助于指出潜在的误解或误用. (2认同)

Lit*_*les 6

你几乎已经拥有了:

SELECT COUNT(DISTINCT [ID]) AS DistinctID
FROM YourTable
WHERE attribute1 > 0
Run Code Online (Sandbox Code Playgroud)