2

私は次のものを持っています:

http://sqlfiddle.com/#!2/fca3d/1

年の各週に 1 つの行を追加し、それに応じて連絡先をフィルター処理しようとしています。新しいテーブルは次のようになります。

        Status 1    Status 2    Status 3
Week 1      3          4           2
Week 2      1          5           3
Week 3      2          2           4

DATEADD を使用する必要があると思いますが、クエリの変更を開始する方法がわかりません。どんな助けでも大歓迎です!

4

1 に答える 1

2

GROUP BY 句を追加するだけです:

SELECT 
    WEEK(created),
    SUM(case WHEN status = 1 then 1 else 0 end) Status1,
    SUM(case WHEN status = 2 then 1 else 0 end) Status2,
    SUM(case WHEN status = 3 then 1 else 0 end) Status3,
    SUM(case WHEN status = 4 then 1 else 0 end) Status4,
    SUM(case WHEN status = 5 then 1 else 0 end) Status5
FROM contacts
GROUP BY WEEK(created), YEAR(created);

年ごとにグループ化することも重要です。そうしないと、年に関係なく週ごとにグループ化されます。
また、1 週間の間にデータがない場合、行は作成されません。これには別のデータセットが必要です。

編集:これはSQL Server 2012の例です[ SQLFiddle ]

于 2012-11-07T20:33:16.390 に答える