单个表中的多个Count()

时间:2010-06-28 09:42:56

标签: sql sql-server-2005 tsql

有没有办法根据同一个表中的多个条件获得多个计数? 例如。计算天数小于15,并计算15至30天。

1 个答案:

答案 0 :(得分:13)

是的,您可以合并SUM和CASE:

SELECT
    SUM(CASE WHEN condition1 THEN 1 ELSE 0 END) count1,
    SUM(CASE WHEN condition2 THEN 1 ELSE 0 END) count2
FROM yourtable

因此,对于您的具体示例:

SELECT
    SUM(CASE WHEN days < 15 THEN 1 ELSE 0 END) count1,
    SUM(CASE WHEN days BETWEEN 15 AND 30 THEN 1 ELSE 0 END) count2
FROM yourtable

如果大多数行都有days > 30,则可能需要在查询结尾添加WHERE days <= 30作为优化。另请注意,BETWEEN包括两个终点。