クエリ 日別(年月日)のデータを曜日別に項目を分け週別で集計する [クエリ]
言葉での説明だとわかりにくいように思いますので、図を先に載せます。
日付と金額の項目を持ったデータテーブルをクエリで以下のような結果に加工します。
月曜日から土曜日の項目で金額を表示し、1レコードはその1週間の集計にします。
1レコードに1日分の金額となっているテーブルから、日曜日から土曜日の金額項目に増やすので、ちょっと力業を使います。
まず、日曜日の項目だけを表示するクエリを考えます。
曜日の判断は、Weekday関数を使用します。
値が1なら日曜日なので、IIF関数で判断して、日曜日の場合のみ金額項目の値を表示し、それ以外なら0を表示します。
こんなふうに、日曜日だけ金額が表示されます。
次に、別の曜日についても同じように式を入れていきます。
月曜日はWeekday=2、その他の曜日も同じように入力していきます。
画面イメージだと収まらないので、SQLを載せておきます。
SELECT T日別実績.日付,
IIf(Weekday([日付])=1,[金額],0) AS 日,
IIf(Weekday([日付])=2,[金額],0) AS 月,
IIf(Weekday([日付])=3,[金額],0) AS 火,
IIf(Weekday([日付])=4,[金額],0) AS 水,
IIf(Weekday([日付])=5,[金額],0) AS 木,
IIf(Weekday([日付])=6,[金額],0) AS 金,
IIf(Weekday([日付])=7,[金額],0) AS 土
FROM T日別実績;
この状態で実行すると、
日ごとで各曜日に金額が表示される状態になります。
金額を曜日別に分けるところができたので、あとは日付を週の開始日(日曜日の日付)に変換します。
これは、以前の記事(クエリ 日別(年月日)のデータを週ごとに集計する)で説明していますので、詳しくはそちらをご覧下さい。
週開始日の項目を入力したら、集計クエリにして、曜日の項目を合計集計に指定します。
集計を行うことで、日別のレコードになっていたのが、1週間分で1レコードの状態になります。
これでできあがりです。
多少強引ですが、クエリだけでこのくらいの加工はなんとかなります。
あと、クロス集計を使っても同じ事ができると思いますが、クロス集計は列項目が固定されない感じがあるので、私はクロス集計はあまり使いません。
コメント 0