![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
早速ですが、皆様のお知恵を拝借したく投稿します。
販売記録をテーブルに入力している状態で(下記参照)、直近6か月の販売金額の合計と直近3か月の販売金額の合計を同じ表の中で表現したく思っています。
販売記録テーブル
|販売月|品名|個数|単価|売上|
|2014/6|AAA| 2| 100| 200|
|2014/8|BBB| 1| 200| 200|
|2014/9|CCC| 1| 200| 600|
上記データであれば以下のように表現させたいのです。
|直近3か月|直近6か月|
| 800| 1000|
このようなことは可能でしょうか?
できるとすればどのような方法でできますでしょうか?
よろしくご教示いただけますと幸いです。
No.1ベストアンサー
- 回答日時:
これは、ちょっと苦労するでしょうね。
問題は、MoveMonth()ですね。Public Function MoveMonth(ByVal strMonth As String, _
ByVal intMove As Integer, _
Optional strFormat As String = "yyyy/mm") As String
Dim YYYY As Long
Dim MM As Long
Dim YYYYMM As String
YYYYMM = Format(strMonth, "yyyymm")
YYYY = Val(YYYYMM) / 100
MM = Val(YYYYMM) - YYYY * 100
MoveMonth = Format(DateSerial(YYYY, MM + intMove, 1), strFormat)
End Function
イミディエイトウインドウで確認してもらえればわかりますが、これで WHERE 節が書けるようになります。
SELECT
DSum("個数*単価","販売履歴",
"販売月 Between MoveMonth('2014/9', -2, 'yyyy/m') AND '2014/9'") AS 直近3か月,
DSum("個数*単価","販売履歴",
"販売月 Between MoveMonth('2014/9', -5, 'yyyy/m') AND '2014/9'") AS 直近6か月;
SQL文は、このように書けば目的を達成できます。
PS、"2014/09"の埋め込みについて
あくまでもサンプルということ。現実には、VBAなどで基準月を指示することになろうかと思います。
![「Access 直近3か月及び6か月のデー」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/2/1232063_5497e75387e3c/M.jpg)
当方がまだAccessのVBAには明るくなく、おそらくコード丸写しになってしまうかもしれないという懸念はありますが、丁寧にサンプルまで作って教えて頂いてありがとうございました!
現状急ぎの作業ではないので、フォーマットの指定も考慮しつつお教えいただいた手法でやってみます!
No.5
- 回答日時:
【補足】日付型として・・・
添付図のように日付型であれば、YYYY/M も YYYY/MM も同じ。
SELECT
DSum("個数*単価",
"販売履歴",
"CDATE(販売月) Between #" & MoveMonth('2014/9',-2,'yyyy/m') & "# AND #2014/9#")
AS 直近3か月,
DSum("個数*単価",
"販売履歴",
"CDATE(販売月) Between #" & MoveMonth('2014/9',-5,'yyyy/m') & "# AND #2014/9#")
AS 直近6か月;
あくまでも YYYY/M に拘るのであれば、[販売月]は日付型として扱うことをお勧めします。
![「Access 直近3か月及び6か月のデー」の回答画像5](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/b/1232063_5497ef30e6a93/M.jpg)
当方がまだAccessのVBAには明るくなく、おそらくコード丸写しになってしまうかもしれないという懸念はありますが、丁寧にサンプルまで作って教えて頂いてありがとうございました!
現状急ぎの作業ではないので、フォーマットの指定も考慮しつつお教えいただいた手法でやってみます!
No.4
- 回答日時:
>yyyy/m では
>'2014/10' < '2014/5'
>ですから、期間が正しく判定できません。
これは、その通りですね。
まあ、多分、そうだろうと思って・・・。
Between MoveMonth('2014/9', -2, 'yyyy/m') AND '2014/9'")
↓
Between MoveMonth('2014/9', -2) AND '2014/09'")
とすれば、この不具合は回避できます。その為に、MoveMonth()関数は、"yyyy/m"、"yyyym"形式で受け取ろうともデフォルトで"yyyy/mm"形式で返すように仕組んでいます。
No.3
- 回答日時:
[販売月] の データ型 や 実際のデータの内容によって変わってきます。
テキスト型 で、サンプルのような記述であれば 下記のクエリで。
データ量が多ければ
Where 条件 を付けて 絞ったほうが良いでしょう。
SELECT
Sum(IIf([販売日] Between [三か月前] And [前月末],[売上],0)) AS 直近3か月,
Sum(IIf([販売日] Between [六か月前] And [前月末],[売上],0)) AS 直近6か月
FROM (
SELECT
売上,
IIf(IsDate([販売月] & "/1"), CDate([販売月] & "/1"),Null) AS 販売日,
DateSerial(Year(Date()),Month(Date())-3,1) AS 三か月前,
DateSerial(Year(Date()),Month(Date())-6,1) AS 六か月前,
DateSerial(Year(Date()),Month(Date()),0) AS 前月末
FROM 販売記録テーブル
) AS Q;
なお、[販売月] が、yyyy/mm (例 '2014/06') の形式なら
No.1 さんの 回答のような方法でも動作します。
yyyy/m では
'2014/10' < '2014/5'
ですから、期間が正しく判定できません。
細部に至りお教えいただきありがとうございます。
データとしては例文と同程度の量なので、クエリも試させていただきます。
何分、まだAccessは初心者同然の為、お教えいただいたコードを理解していくことから始めたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら…
-
Accessで○ヶ月前以前を抽出する方法はありますか?
Access(アクセス)
-
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
ACCESS 集計クエリの列見出し名を変更したい
Access(アクセス)
-
-
4
年月日を持つテーブルから年月を指定して抽出したいのですが
その他(データベース)
-
5
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
6
Accessで今日から5日後
その他(データベース)
-
7
アクセスでフォームが更新できない&データ参照ができなくなった
その他(データベース)
-
8
ACCESSでのひとつ前レコードの求め方について
その他(Microsoft Office)
-
9
OR関数
その他(Microsoft Office)
-
10
access2010 クロス集計後の計算 直近3ヶ月のテーブルを持っています。 くらい集計にて 行側
Access(アクセス)
-
11
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
12
Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アダルトビデオのモザイクにつ...
-
未成年でもネットでお酒は買え...
-
男性下着が盗まれる理由について
-
既製品をに手を加えて、販売す...
-
メルカリで手作りハンドメイド...
-
危険物取扱いの「貯蔵」と「取...
-
Access レポートを開く時、2つ...
-
本物の近親相姦ビデオを売る・...
-
インターネットアーカイブにWin...
-
個人作成のアダルト画像販売は...
-
新潟県内で谷川岳のもつ煮販売...
-
市販商品の加工販売は違法?
-
パラメーターが少なすぎます 1...
-
量販店モデルって何ですか?
-
化粧品のテスターや見本品をネ...
-
木天蓼(マタタビの虫えい果)...
-
西山ダディダディってなんですか?
-
製品供給責任の法的義務につい...
-
「ご試食」か「試食」か、どち...
-
市販商品のラベルを張り替えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アダルトビデオのモザイクにつ...
-
個人作成のアダルト画像販売は...
-
男性下着が盗まれる理由について
-
危険物取扱いの「貯蔵」と「取...
-
Access レポートを開く時、2つ...
-
既製品をに手を加えて、販売す...
-
アセトン(有機溶剤)の販売に...
-
就労支援B型で働いてるのですが...
-
本物の近親相姦ビデオを売る・...
-
未成年でもネットでお酒は買え...
-
講義ノート販売の違法性について
-
Access 直近3か月及び6か月のデ...
-
市販商品の加工販売は違法?
-
富くじに抵触?
-
品質表示のない洋服の販売について
-
量販店モデルって何ですか?
-
インターネットアーカイブにWin...
-
パラメーターが少なすぎます 1...
-
メルカリで手作りハンドメイド...
-
プリウス
おすすめ情報