Group-By
在結果列中按月分組?
我正在使用這個 DBMS:Caché
我從未在 SQL 中使用過數據透視表,在 Excel 中我什至不擅長它,但我認為這就是我需要的。給定以下範例數據:
ID Name Result Date 01 Steve Win 2015-01-06 00:00:00 02 James Win 2015-05-12 00:00:00 03 Bob Lose 2015-06-21 00:00:00 04 Bob Win 2015-05-23 00:00:00 05 James Win 2015-04-04 00:00:00 06 James Lose 2015-01-06 00:00:00 ...
我怎樣才能得到這樣的結果?(數字與樣本數據不匹配)
按月獲勝
Jan Feb Mar Steve 4 0 1 James 1 3 1 Bob 3 1 1 Steve 2 3 2
適用於大多數 DBMS 的 PIVOT 是:
select name , count(case when Result = 'Win' and Month(dt) = 1 then 1 end) as Jan , count(case when Result = 'Win' and Month(dt) = 2 then 1 end) as Feb , count(case when Result = 'Win' and Month(dt) = 3 then 1 end) as Mar from t group by name
我使用 dt 作為日期列的名稱,因為日期是保留字。正如其他人所提到的,對於特定供應商可能有更好的解決方案,因此您應該始終用它來標記您的問題,除非您正在尋找通用解決方案。