SQL比里面的Count函数好

时间:2016-02-13 15:03:57

标签: sql sql-server count

我想要这样做,但它抛出了一个SQL错误:

org.geotools

我的意图是在这里计算所有大于0的项目。它在MySQL中运行良好,但SQL Server 2008不喜欢它。

感谢。

2 个答案:

答案 0 :(得分:2)

在SQL Server中,您需要case语句:

SELECT SUM(CASE WHEN items > 0 THEN 1 ELSE 0 END) as totalItems
FROM testTable;

如果你这样做,可以使用COUNT()

SELECT COUNT(CASE WHEN items > 0 THEN 1 END) as totalItems
FROM testTable;

但我更喜欢使用SUM()

或者,如果items是非负面的:

SELECT COUNT(NULLIF(items, 0)) as totalItems
FROM testTable;

答案 1 :(得分:0)

嗯,该查询本身可能只是

SELECT COUNT(*) as totalItems 
FROM testTable
WHERE items > 0

但如果它是较大查询的一部分,WHERE子句不适用于那么你可以使用

SUM(CASE WHEN items > 0 THEN 1 ELSE 0 END)

正如戈登所说。