• ベストアンサー

ACCESSのクエリ

いつもお世話になってます。 今回はACCESSのSQLのクエリについて質問します。 テーブルAを日付ごとにテーブルBのようにしたいのですがどうすれば良いでしょうか? テーブルA ID  日付  商品  個数 1   1/1  ドコモ  10 2   1/1  AU   11 3   1/1  ソフト  12 4   1/2  ドコモ   5 5   1/2  AU    4 6   1/2  ソフト   3 ・ ・ ・ テーブルB 日付   ドコモ  AU  ソフト 1/1    10    11   12 1/2     5    4    3 ・ ・ ・ わかりにくい説明かもしれませんがよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.3

#2です。もっと簡単なSQLがありました。 SELECT 日付, SUM(IIF(商品="ドコモ", 個数, 0)) AS ドコモ, SUM(IIF(商品="AU", 個数, 0)) AS AU, SUM(IIF(商品="ソフト", 個数, 0)) AS ソフト FROM テーブルA GROUP BY 日付;

sako77
質問者

お礼

2回も答えて下さってありがとうございます。 希望通りの結果が出ました。 ありがとうございました。

その他の回答 (3)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.4

クロス集計クエリを作ります。 クエリをデザインから作成します。テーブルAを表示させておきます。 クエリの種類をクロス集計にします。 テーブルA内の「日付」をダブルクリックし、行列の入れ替えを行見出しへ テーブルA内の「商品」をダブルクリックし、行列の入れ替えを列見出しへ テーブルA内の「個数」をダブルクリックし、行列の入れ替えを値、集計を合計へ クエリの表示をデータシートビューにして表示を確認します。 よければクエリを保存します。

sako77
質問者

お礼

参考にさせて頂きます。 ありがとうございました。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

商品ごとに個数のフィールドを分けてから集計すれば可能です。 SELECT 日付, SUM(F1) AS ドコモ, SUM(F2) AS AU, SUM(F3) AS ソフト FROM (SELECT 日付, IIF(商品="ドコモ", 個数, 0) AS F1, IIF(商品="AU", 個数, 0) AS F2, IIF(商品="ソフト", 個数, 0) AS F3 FROM テーブルA) GROUP BY 日付;

  • BookerL
  • ベストアンサー率52% (599/1132)
回答No.1

Access2002 以降であれば「ピボットテーブル」が使えます。 http://riko.s235.xrea.com/Excel-VBA/excel4-10-007.html

sako77
質問者

お礼

ピボットテーブルの名前は聞いたことはありましたがこういう事もできるんですね。参考にさせていただきます。ありがとうございました。

関連するQ&A

  • Accessのクエリ(初心者)

    Access超初心者です。 クエリで悩んでいるので、お教えください。 テーブル1に CODE(商品ID)_NAME(名前)_SUU(数量)_DAY(日付)の4項目があり、 クエリを使って、最も大きいSUUを抽出したい (かつ最も大きいSUUのデータが重複している場合、その中で最も古い日付のデータのみを抽出したい)のですが・・・ たとえば、 テーブル内容: CODE(商品ID)_NAME(名前)_SUU(数量)_DAY(日付) A_あめ_600_0517 A_あめ_900_0518 A_あめ_400_0618 B_ガム_120_0217 B_ガム_060_0319 B_ガム_180_0718 B_ガム_180_0518 抽出結果: A_あめ_900_0518 B_ガム_180_0518 ということです。 デザインビューを使うとして、どのような方法がありますでしょうか? どうかご教授お願いします!

  • Accessのクエリ

    Access2000です。 お願いします。 テーブルが以下のようになっています。 (例)  種類   個数 りんごA  1 りんごB  2 みかん   1 ばなな   1 クエリで抽出するときにりんごはA,Bの区別なくまとめて、 個数を足して3と表示させたいのです。 どのようにしたら良いでしょうか? どうぞよろしくお願い致します。

  • Accessクエリ IIFについて

    お世話になります。 2つのテーブルをIDで紐付けて、それぞれの項目を比較し、○×を付けたいと思います。 【テーブルA】  ID メーカー 型番 品名 【テーブルB】  ID メーカー 型番 品名 【クエリC】  テーブルAとテーブルBをIDで紐付けて、各フィールド名を   テーブルAの方は前回_メーカー、前回_型番、前回_品名 とし、   テーブルBの方は今回_メーカー、今回_型番、今回_品名 とする。 【クエリD】  クエリCを元に、   前回_メーカー、前回_型番、前回_品名、今回_メーカー、今回_型番、今回_品名   を並べて表示し、それぞれを以下のように評価する。   メーカー評価:IIf([前回_メーカー]=[今回_メーカー],"○","×")   型番評価:IIf([前回_型番]=[今回_型番],"○","×")   品名評価:IIf([前回_品名]=[今回_品名],"○","×")   上記3つの評価でいずれかが×となっているレコードを抽出。 しかし、前回と今回でいずれも型番が空白(Null)だった場合、上記評価を すると"×"となってしまいました。 そこで質問ですが、   ・そもそもNull同士の評価は"×"になってしまうのでしょうか?(比較できない?)   ・テーブルAはSQL Server上にあり、テーブルBはExcelをインポートしたもの   (Accessのローカルテーブル)です。この違いによるものでしょうか。 ご教授の程、宜しくお願い致します。

  • 【アクセス】 クエリの使用方法

    現在アクセスを使用してデータベースを作成して いるですが、複数のテーブルを一つのクエリに まとめたいのですが 例えば (Aテーブル) (Bテーブル) (Cテーブル)   日付      日付      日付 上記A~Cのデータの日付をクエリで一つにする ことはできますか? アクセス超初心者で基本的な質問かもしれませんが よろしくお願いします。

  • Access クエリについて

    Accessのテーブル1に、フィールド「コード」「回数」があり、レコードとして A,32 B,20 C,13 ・・・というように、ランダムなコードと回数がセットされているとします。コードは主キーです。 このテーブル1を元にしたクエリで A,1 A,2 A,3 ・・・ A,32 B,1 B,2 ・・・ B,20 C,1 C,2 ・・・ C,13 というように、コードごとに「回数」と同じ数のレコードがクエリ上に生成されるようにしたいのですが、こういうことは出来るのでしょうか?出来ればSQLで回答いただけないでしょうか。

  • Accessで前回発注分だけ抜き出すクエリは

    お世話になっております。 Accessで発注テーブルから、前回の発注分のレコードだけ を抜き出すクエリがあれば教えてください。 発注テーブルの構成としては 商品コード 発注数 発注日 A-1     15    2014/07/05 A-1     10    2014/07/10 A-2     25    2014/07/12 B-3    30 2014/07/14 B-3     30    2014/07/18 という構成になっており、この場合、 A-1の2014/07/10の発注分 A-2の2014/07/12の発注分 B-3の2014/07/18の発注分 をクエリで抜き出したいと思います。 当方SQL文とモジュールが使えませんので クエリのデザインビューでの方法をご教授 いただけますとありがたいです。 どうぞよろしくお願いいたします。

  • ACCESSのクエリーで

    ACCESSのクエリで たとえば下記のテーブルがあったとき コード 品名 1   商品001 3   商品003 4   商品A 7   商品BB と有ったときACCESSのクエリで 1   商品001 2 3   商品003 4   商品A 5 6 7   商品BB のようにテーブルに無いコードのところは空番にしないで 番号をだけを付けるのは可能でしょうか? もとのテーブルはいじりたくないので・・・ もし、やり方が有るならば教えてください

  • Access クエリで新規テーブルを作成

    お世話になります。 クエリで新規テーブルを作成することは可能でしょうか。 テーブル作成クエリだと、既存のテーブルで抽出した内容で新規に作成する ことになるかと思います。 今回はまっさらな新規のテーブルを作成したいところです。 例えば、フィールド名とデータ型が  ID オートナンバー  受注日 日付型  商品   テキスト型 の場合だと、どのようになりますでしょうか。 ご教授の程、宜しくお願い致します。

  • ACCESS2003でクエリの質問です

    クエリを教えて下さい。 ACCESS2003でクエリを作成したいのですが テーブルに以下のようにデータが入っています。 ID   日付   項目あ 項目い 項目う 項目え 項目お 001 2009/08/27  A         B    C 001 2008/08/27  D    E         F    G 002 2009/08/27       H         I 002 2008/08/27  K    L         M 002 2007/08/27  K    L    O    M 同一IDで日付の新しいレコードを抽出するのですが、 もしNULLの項目があれば、日付の古いレコードから編集したいです。 結果としては以下のようなテーブルを作成したいです。 [002]の[項目お]の様に過去日付のものがNULLであれば編集はしません。 ID   日付   項目あ 項目い 項目う 項目え 項目お 001 2009/08/27  A    E    B    C    G 002 2009/08/27  K    H    O    I また以下のように過去日付のデータが異なる場合は 事前のチェックでエラーとして別テーブルに出すように考えていますが、 こちらも合わせて教えていただけると助かります。 ID   日付   項目あ 項目い 項目う 項目え 項目お 003 2009/08/27  N    O    P         Q 003 2009/08/27  N    O    P    R    Q 003 2009/08/27  N    O    P    S    Q SQLが苦手で困っています。 宜しくお願いします。

  • access2003初心者です。50商品の在庫管理をしています。

    access2003初心者です。50商品の在庫管理をしています。 作成したのは ・商品テーブル(商品コード、商品名) ・受注テーブル(日付、商品コード、個数) です。 受注テーブルには受注があった商品のデータしか入力していません。 しかしレポートでは、すべての商品を並べて 「受注がない商品については、数量を0」 としてレポートを作成したいと考えています。 レポートを作成するには、「元となるテーブルやクエリが必要になってくる」と本に書いてあったのですが、 この元となるクエリを作成することができません。 作成したいクエリは次のとおりです。   日付   商品 個数 2008/04/01 商品01 2 2008/04/01 商品02 0←このデータ(日付、商品、個数)は受注テーブルにはありません。以下同じ。 ・ ・ ・ ・ ・ ・ 2008/04/01 商品50 2 2008/04/02 商品01 1←ここから日付が翌日になります。 2008/04/02 商品02 1 ・ ・ ・ ・ ・ ・ 2008/04/02 商品50 0 2008/04/03 商品01 2←ここから日付が翌々日になります。 2008/04/03 商品02 2 ・ ・ ・ ・ ・ ・ データがないものに対して、 自動で日付を入力したり、個数を0にしたりしたいのですが、 どのような抽出条件またはSQLなどを書いたらいいのかわかりません。 よろしくお願いします。

専門家に質問してみよう