Group-By

在結果列中按月分組?

  • August 8, 2015

我正在使用這個 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 作為日期列的名稱,因為日期是保留字。正如其他人所提到的,對於特定供應商可能有更好的解決方案,因此您應該始終用它來標記您的問題,除非您正在尋找通用解決方案。

引用自:https://dba.stackexchange.com/questions/109383