2

php / MySQL(またはその効果のための何か)でピボットテーブルを処理する最良の方法は何ですか

以下のような情報を返すクエリがあります

id      eng     week        type                sourceid    userid

95304   AD      2012-01-02  Technical           744180      271332
95308   AD      2012-01-02  Non-Technical       744180      280198
96492   AD      2012-01-23  Non-Technical       1056672     283843
97998   AD      2012-01-09  Technical           1056672     284264
99608   AD      2012-01-16  Technical           1056672     283842
99680   AD      2012-01-02  Technical           1056672     284264
100781  AD      2012-01-23  Non-Technical       744180      280671

そして、週の開始の列ヘッダーを持つグループごとにカウントするレポートをPHPで作成したいと考えています。例えば

week commencing: 2012-01-02    2012-01-09    2012-01-16    2012-01-23    2012-01-30
Total:           3             1             1             1             0
Technical:       2             1             1             0             0
Non-Technical:   1             0             0             1             0

ただし、レポートが実行される月に応じてヘッダーが動的であるため、どこから開始するかはよくわかりません。

月の詳細を渡してPHPですべてのデータを取得する方法を知っていますが、現在、グループ化して配列に入れるのではなく、1つの列に出力しています。

助けていただければ幸いです。

4

1 に答える 1

4

サブクエリを使用してこれを実行し、このデータを生成して集計することができます。これに沿って何かを試してください:

select week, 
    count(*) as total, 
    sum(technical) as technical, 
    sum(non_technical) as non_technical) 
from(
    select week, 
    case(type) when 'Technical' then 1 else 0 END as technical, 
    case(type) when 'Non-Technical' then 1 else 0 END as non_technical
) as data
GROUP BY week
于 2012-05-18T08:55:23.760 に答える