0
我想做到这一点,但它抛出一个SQL错误伟大:SQL比内部计数功能
SELECT COUNT(items > 0) as totalItems FROM testTable
Incorrect syntax near '>'.
我的目的是计算是比0更大这里所有项目。它在MySQL中效果很好,但SQL Server 2008不喜欢它。
谢谢。
我想做到这一点,但它抛出一个SQL错误伟大:SQL比内部计数功能
SELECT COUNT(items > 0) as totalItems FROM testTable
Incorrect syntax near '>'.
我的目的是计算是比0更大这里所有项目。它在MySQL中效果很好,但SQL Server 2008不喜欢它。
谢谢。
在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;
嗯,查询本身可能仅仅是
SELECT COUNT(*) as totalItems
FROM testTable
WHERE items > 0
但是,如果它的WHERE
条款没有按”较大查询的一部分t适用于那么你可以使用
SUM(CASE WHEN items > 0 THEN 1 ELSE 0 END)
正如戈登建议。
我从来没有比现在更喜欢MySQL =)。为什么偏好? – Shackrock
@ Shackrock。 。 。将布尔值作为整数处理是我真正喜欢的MySQL的特性之一。 –
@ Shackrock。 。 。我不喜欢那个“count(2)'='count(1)'。似乎很容易产生误解。 –