2012-09-24 64 views
0

每個月列我有一個看起來像這樣一個數據庫:提取數據,僅使用MySQL的

Year Month  New Visitor? 
2011 Jan   Yes 
2011 Jan   No 
2012 Feb   No 
2012 Feb   No 
2012 Feb   Maybe 

我想是的,並沒有對是單獨的列,每月這樣我就可以打印出來作爲我知道要做到這一點,我需要這樣的結果:

Year Month   Yes  No  Maybe 
2011 Jan   1   1  0 
2012 Feb   0   2  1 

我該如何去使用只有MySQL?

+0

你想要什麼叫做 'PIVOT',這本身並不MySQL支持。不過,您可以使用@HP HopeIHelped的解決方案手動執行相似的操作。 – PinnyM

回答

1

嘗試:

SELECT `Year`, `Month`, 
    COUNT(IF (`New Visitor?` = 'Yes', 1, NULL)) AS `Yes`, 
    COUNT(IF (`New Visitor?` = 'No', 1, NULL)) AS `No`, 
    COUNT(IF (`New Visitor?` = 'Maybe', 1, NULL)) AS `Maybe` 
    FROM `table` 
    GROUP BY `Year`, `Month`; 
+1

感謝這工作!雖然我需要一個額外的括號:'COUNT(IF('New Visitor?'='Yes',1,NULL))AS Yes' – Harry

+0

我的不好,已修復。謝謝。 –

1

您可以使用以下(見SQL Fiddle with demo):

select year, month, 
    sum(case when newVisitor = 'yes' then 1 else 0 end) yes, 
    sum(case when newVisitor = 'No' then 1 else 0 end) no, 
    sum(case when newVisitor = 'Maybe' then 1 else 0 end) maybe 
from yourtable 
group by year, month