• ベストアンサー

accessクロス集計で前月21日~今月20日集計は

i-haradaの回答

  • i-harada
  • ベストアンサー率22% (56/252)
回答No.1

i-haradaです。 「年月日」という考え方を頭の中から捨ててしまうと可能と思います。 12の月「21」から「31」は次の月つまり1の月とします。 (1)日付を分解し年,月,日と数値にする。 (2)単純に「IIf」を利用して日付の部分をどの月か判定する    IIf(日付<21,月,IIf(月=12,1,月+1)) なんてのはいかがでしょう。まっ素人の考える事ですからもっと良い方法が 有るように思いますが。 実際の年月日から直接判断するのは私には難しいのでこれぐらいしか思いつきません。

s-holmes
質問者

お礼

回答ありがとうございました。 zzzzzzさんの補足で、目的のことを達成できました。 ご説明により、アクセスのことも少しまたわかりました。

s-holmes
質問者

補足

回答ありがとうございました。 初心者なので下記まではやったものの、正しく目的の表示までには至っていませんが、お知恵があれば拝借を。 (^^; #access97です。 TRANSFORM Sum(弁当注文.売上) AS 値 SELECT 弁当注文.氏名, Sum(弁当注文.売上) AS [集計値: 売上] FROM 弁当注文 GROUP BY 弁当注文.氏名 PIVOT Format(IIf(Day([年月日])<21,Month([年月日]),IIf(Month([年月日])=12,1,Month([年月日])+1)),"oooo") In ("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");

関連するQ&A

  • [ACCESS]クロス集計クエリで年度の設定方法

    ACCESS2003です。 過去ログを見ても解決しなかったので質問します。 納品記録のテーブルから、年度、月ごとのクロス集計クエリを作りたいのですが行き詰ってます。 一応それらしいのは作れたのですが、1月~12月が1年度とされています。 1年度を10月~9月に設定して集計したいのです。 例:2004年度 = 2003年10月~2004年9月 Format([納品日],"yyyy") & "年度" の部分を変えればいいと思うのですが、イマイチわかりません。 [納品日]は、2004/10/12 といったデータです。 SQLは次のようになっています。 TRANSFORM Sum(tbl納品記録.納入合計) AS 納入合計の合計 SELECT Format([納品日],"yyyy") & "年度" AS 式1 FROM tbl納品記録 GROUP BY Format([納品日],"yyyy") & "年度" PIVOT Format([納品日],"oooo") In ("10月","11月","12月","1月","2月","3月","4月","5月","6月","7月","8月","9月");

  • クロス集計クエリについて

    現在、次の様な2個のSQL記事で別々のクロス集計を行っていますが1カ所で同様の集計又は、クロス集計同士結合を行う事は出来ないでしょうか?あまり意味の無いようにも思われますがEXCELで複合グラフにする必要がある為、 (1)、TRANSFORM Count(*) AS 件数 SELECT DAO1.客先, Year(DateAdd("m",-3,DAO1.[発生日])) & "年度" AS 年度, Count(*) AS 年度計, Sum(IIf(Month(DateAdd("m",-3,DAO1.[発生日]))<7,1,0)) AS 上期計, Sum(IIf(Month(DateAdd("m",-3,DAO1.[発生日]))<7,0,1)) AS 下期計 FROM DAO1 WHERE (((Year(DateAdd("m",-3,[DAO1].[発生日])) & "年度") Between Nz([年度いつから?],0) And Nz([年度いつまで?],99999)) AND ((DAO1.品記) Is Not Null)) GROUP BY DAO1.客先, Year(DateAdd("m",-3,DAO1.[発生日])) & "年度" ORDER BY Year(DateAdd("m",-3,DAO1.[発生日])) & "年度", Format([発生日],"oooo") PIVOT Format([発生日],"oooo") In ("4月","5月","6月","7月","8月","9月", "10月","11月","12月","1月","2月","3月"); (2)、TRANSFORM Count(DAO1.品記) AS 品記のカウント SELECT DAO1.客先 FROM DAO1 GROUP BY DAO1.客先 PIVOT DAO1.年度;

  • クロス集計クエリについて

    アクセス2000を使っています。 クロス集計クエリのウイザードで下記を作成しましたが合計値が表示されません。 TRANSFORM Sum(納品書.数量) AS 数量の合計 SELECT 納品書.商品名, Sum(納品書.数量) AS [合計 数量] FROM 納品書 GROUP BY 納品書.商品名 PIVOT Format([年月日],"mmm") In ("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"); もともとのレコードは 年月日 商品名 数量 01/01/10 カメラ 50 02/01/15 ラジオ 50 02/01/15 テレビ 30 というような内容です。 #まだウイザード頼りのレベルです。

  • アクセス:クロス集計の抽出条件

    添付のようなテーブルがあり下記のSQLを実行するとクエリ1になるのですが、合計数に抽出条件を入れてクエリ2のように10個以下のものは表示しないようしたいと思います。 下記SQLをどのように直したらよいでしょうか。一つのクエリで行う方法を教えて下さい。 TRANSFORM Sum([テーブル1].個数) AS 個数の合計 SELECT [テーブル1].[くだもの], Sum([テーブル1].個数) AS 合計 FROM テーブル1 GROUP BY [テーブル1].[くだもの] PIVOT [テーブル1].月;

  • Access2007でのクエリの集計

    今Access2007を使って月別に商品の売上を集計するものを作っています。 そこで売上を月別で集計することはできたのですが、月で売上の無い物は集計できずに空白が表示されてしまいます。それで空白に0を入れたいのですが、やり方がいまいちわかりません。 どうやったらいいか教えてください。お願いします

  • アクセス:クロス集計の抽出条件-2

    質問No.9247365 で類似した質問をしました。 添付のようなテーブルがあり下記のSQLを実行するとクエリ1になるのですが、カウントに抽出条件を入れてクエリ3のように合計件数が1のものは集計しないようしたいと思います。 下記SQLをどのように直したらよいでしょうか。一つのクエリで行う方法を教えて下さい。 TRANSFORM Count([テーブル1].[くだもの]) AS くだもののカウント SELECT [テーブル1].[くだもの], Count([テーブル1].個数) AS 合計 FROM テーブル1 GROUP BY [テーブル1].[くだもの] PIVOT [テーブル1].月;

  • アクセスクロス集計

    アクセスクロス集計のことですが、下記のような場合      合計 4月 5月 6月 山田太郎 100円 20円 50円 30円 山田花子 130円 50円 50円 30円 山崎百恵 180円 100円 50円 30円 このような表を使っていますが、この一番下に月別集計を表示したいのですが、これをクエリにうまく書く方法がありますか。つまり1つのSQLで表示する方法。 #素人で、クエリはウイザードで作ったものに一部where句を追加したりしかできません。 #実務的には クロス集計のSQLをaspにて表示しています。 #質問の仕方に自信なし。

  • クロス集計の値の表示(access)

    access2000でクロス集計を作成しましたが、値が空白の部分があり、CLng(値)で表示しようとするとエラーになります。下記の「Sum(マスター.金額)」の部分にCLngを付けるためにはどのようにしたらよいものでしょうか。 TRANSFORM Sum(マスター.金額) AS 金額の合計 SELECT マスター.収支区分, CLng(Sum(マスター.金額)) AS [合計金額] FROM マスター GROUP BY マスター.収支区分 PIVOT マスター.施設区分; #accessの初心者です。

  • 列に対して条件抽出する方法 クロス集計クエリ

    クロス集計クエリで 列に対して条件抽出する方法ってあるのでしょうか? 例えば、元データが 日付       金額       科目 2013/09/16   ¥100   食費 2013/09/24   ¥8,100   生活費 2013/10/01   ¥10,000   生活費 と言うテーブルがあるのですが このテーブルを元にクロス集計クエリを作りました。 ウィザードで作ったら TRANSFORM Sum(T_test.金額) AS 金額の合計 SELECT T_test.科目, Sum(T_test.金額) AS [合計 金額] FROM T_test GROUP BY T_test.科目 PIVOT Format([日付],"oooo") In ("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"); こうなりました。 形としてはこのままでいいのですが、 例えば、9月分のみ表示したい場合、どうすればいいのでしょうか? 抽出条件として Between #2013/09/01# And #2013/09/30# を入れてみましたが、 何も表示されなくなってしまいます。

  • クロス集計での order by句の使い方

    下記の order byの部分を年月日でなく合計件数順に並べ変えたいのですが、Count(氏名)を入れると「 order by句で集計関数は使えません」のようなメッセージが出ます。(access2000) 何か良い方法はないでしょうか。 TRANSFORM Count(氏名) AS 氏名のカウント SELECT 年月日, Count(氏名) AS 合計件数 FROM 日誌 GROUP BY 年月日 ORDER BY 年月日 PIVOT 区分; #access素人です。