2012-07-26 58 views

回答

27

好吧,如果你可以过滤整个查询,然后LittleBobbyTables已经the answer你。如果没有,你可以得到这样的列如下:

count(distinct case when attribute1 > 0 then id end) -- implicit null-else, iirc 
+0

我需要它作为查询的一部分。在集合函数中使用它有什么问题? – CodeKingPlusPlus 2012-07-26 19:27:09

+0

+1,但您的记忆没有错误:省略ELSE时,隐含ELSE NULL。另一方面,我并不十分理解这种关于条件汇总的“性能问题”。我的意思是,在集合函数中有什么是CASE的替代品(例如,当你的查询需要返回条件计数和无条件计数时)? – 2012-07-26 20:08:41

+0

我明白了,但你已经规定在你的回答中,所以你最后的声明听起来好像某人可能会对完全合法的条件聚合使用感到恼火。我只是想说清楚你是否真的这么想。一般来说,我同意你的看法,这件事*可以*被滥用,就像其他任何事情一样。 – 2012-07-27 04:33:00

2

你几乎有它:

SELECT COUNT(DISTINCT [ID]) AS DistinctID 
FROM YourTable 
WHERE attribute1 > 0