单个表中的多个Count()

Rab*_*bin 3 sql t-sql sql-server-2005

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

Mar*_*ers 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
Run Code Online (Sandbox Code Playgroud)

所以对于你的具体例子:

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
Run Code Online (Sandbox Code Playgroud)

如果大多数行都有,days > 30那么可能值得WHERE days <= 30在查询结尾添加一个优化.另请注意,BETWEEN包括其两个终点.