SSブログ

クエリ 日別(年月日)のデータを曜日別に項目を分け週別で集計する [クエリ]

 言葉での説明だとわかりにくいように思いますので、図を先に載せます。

 日付と金額の項目を持ったデータテーブルをクエリで以下のような結果に加工します。

 月曜日から土曜日の項目で金額を表示し、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レコードの状態になります。
 これでできあがりです。

 多少強引ですが、クエリだけでこのくらいの加工はなんとかなります。
 あと、クロス集計を使っても同じ事ができると思いますが、クロス集計は列項目が固定されない感じがあるので、私はクロス集計はあまり使いません。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。