我想要这样做,但它抛出了一个SQL错误:
org.geotools
我的意图是在这里计算所有大于0的项目。它在MySQL中运行良好,但SQL Server 2008不喜欢它。
感谢。
答案 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)
正如戈登所说。