2017-10-12 66 views
0

我如何計算保存特定值的列 - 但將其作爲總計。有特定條件的計數列

表中的數據:

Code  No 
    1   * 
    2   - 
    3   4 
    4   

舉例來說,如果我想看看有多少行有*和 - 和空間

我能做

Case when No = '*' 
Then COUNT(No) 
when No = '-' then count(No) 
when No = '' then count(No) 
else 0 end as 'Count' 

但這返回4

http://sqlfiddle.com/#!9/f73409/4

我想這回3

任何幫助,將不勝感激

回答

4

使用IN

select Sum(Case when No IN ('*', '-', '') then 1 else 0 end) as Count 
from Table1 

Fiddle

0

標準SQL有一個特定的功能:filter子句遵循聚合。

不幸的是,它沒有得到廣泛的支持(主要是PostgreSQL)。

有一個簡單的解決方案使用case但是:

COUNT(CASE WHEN <condition> THEN 1 END) 

這工作,因爲case因爲count隱含else null條款不計null

更多關於filter條款及其模仿方法:http://modern-sql.com/feature/filter