2012-02-09 162 views
1

從概念上講,我有一個包含水果項目列表的表。我想通過一個查詢來查看有多少蘋果,橙子,「蘋果或橙子」和「其他水果」。'A','B'和'A或B'的T-SQL COUNT

如何在T-SQL中實現這一點?

+0

作爲一個例子,你的標題和描述都暗示你可能有一行只有一個值,比如「蘋果或橙子」......基於@gbn的回答,我們現在可以假設你的意思不是你說了什麼,每一行都會有一個奇異的值,比如'apple'或者'orange'或者'kiwi' ... – 2012-02-09 15:23:59

+0

@AaronBertrand數據中的概念會有太多的解釋。我明白你的觀點,但水果是普遍的,並得到有效回答。 – Craig 2012-02-09 15:30:48

+0

@AaronBertrand如果你看看我以前的問題,幾乎所有沒有標記答案的人都沒有正確回答。 – Craig 2012-02-09 15:34:14

回答

9
SELECT 
    COUNT(*) AS Allfruits, 
    COUNT(CASE WHEN fruit = 'Apple' THEN 1 END) AS AppleCount, 
    COUNT(CASE WHEN fruit = 'Orange' THEN 1 END) AS OrangeCount, 
    COUNT(CASE WHEN fruit IN ('Apple','Orange') THEN 1 END) AS AppleOrOrangeCount, 
    COUNT(*) - COUNT(CASE WHEN fruit IN ('Apple','Orange') THEN 1 END) AS OtherFruitCount 
FROM 
    MyTable 

注:如果沒有ELSE子句或某些顯式條件,CASE會給出NULL。 COUNT忽略NULL。

+0

完美答案! Upvoted! – Marco 2012-02-09 15:16:52

+0

美麗。謝謝!我錯過的概念是將一個CASE放在COUNT裏面。不要以爲我這樣做過。 – Craig 2012-02-09 15:18:37

+0

+1給出了一個模糊的問題(至少對我來說)。 – 2012-02-09 15:21:35

相關問題