我在用MySQL選擇查詢完成某些操作時遇到了麻煩。我有一個統計表,由一個字母數字ID列,一個yearID列和一系列其他各列組成,表示在指定年份發生了多少次事件。就像這樣:MySQL:將逐年的行轉換爲列?
personID yearID event1 event2 event3
person1 1999 12 15 2
person1 2000 14 7 3
person1 2001 25 10 2
person2 1999 16 12 1
person2 2000 15 14 1
person2 2001 9 20 2
我嘗試使用select得到以下欄目:
personID event1_1999 event1_2000 event1_2001 event2_1999 event2_2000 etc...
,所以我使用這種類型的代碼:
select
personID,
if(year_ID = "1999",event1,NULL) AS event1_1999,
if(year_ID = "2000",event1,NULL) AS event1_2000,
if(year_ID = "2000",event1,NULL) AS event1_2001,
etc.
我發現在結果不幸的是,只有與第一年相對應的列(例如,event1_1999,event2_1999等)才包含任何數據,其餘都爲null。我無法弄清楚這是爲什麼,或者解決它的一種方法。誰能幫忙?
感謝
這是問題的常見類型,SO搜索「MySQL的樞軸」。你會發現很多。 – Barmar
謝謝 - 我看到了一種技術來完成這項工作,但我還沒有明白爲什麼我的技術失敗。那裏有什麼見解? –
@JohnC:你還沒有發佈你的技術,所以這是不可能回答的:你的技術失敗的原因將取決於你的技術*是什麼*。 (例如,您的查詢是否使用了「GROUP BY」?無論是否使用GROUP BY,任何一種方式都會失敗,但出於不同的原因。)如果發佈使用您的技術的*完整*查詢,則您有更好的機會得到答案。 – ruakh