2015-02-11 27 views
1

我想通過一年來算兩場如何通過一年

我嘗試

SELECT YEAR(admit_date),COUNT(sub_case),COUNT(SK) 
FROM admit 
WHERE sub_case = "scase001" 
    AND SK = "rsk002" 
GROUP BY YEAR(admit_date),sub_case,SK 

但要算兩場它不是真正的

enter image description here

enter image description here

2014 1 0 
2015 1 1 

回答

1

刪除sub_case和SK列,您可以使用條件的聚集,而不是像這樣:

SELECT 
    YEAR(admit_date) AS "admit_year", 
    SUM(sub_case = 'scase001') AS "sub_case_count", 
    SUM(SK = 'rsk002') AS "sk_count" 
FROM admit 
GROUP BY YEAR(admit_date) 

表達式對於所有匹配的行,將評估爲1,並且總結匹配與計數它們相同。以這種方式使用(或濫用)布爾表達式可能無法在其他SQL數據庫中工作,但它在MySQL中(通常會使用case when ... then .. end表達式)。

+0

謝謝,我明白了。 – 2015-02-11 18:33:56

1

您需要從GROUP BY

SELECT YEAR(admit_date),COUNT(sub_case),SUM(CASE WHEN SK="rsk002" THEN 1 ELSE 0 END) 
FROM admit 
WHERE sub_case = "scase001" 
GROUP BY YEAR(admit_date) 
+0

我嘗試但只顯示2015年only.I要顯示2014年和2015年 – 2015-02-11 18:27:53

+0

嘗試更新的版本 – arnoudhgz 2015-02-11 18:29:51