access SQL構文の使い方

このQ&Aのポイント
  • access SQL構文を使用して、特定のデータを集計する方法について教えてください。
  • groupbyと副問い合わせを組み合わせることで、複数の条件で集計を行うことができます。
  • 具体的なSQL構文の書き方がよくわからない場合は、2段階に分けて処理する方法もあります。
回答を見る
  • ベストアンサー

access SQL構文について

教えてください。 下記のようなデータを 結果のようなデータにもっていくには アクセスでどのようなSQLを書いたらいいのでしょうか? groupbyで人とバスケットを両方やってしまうと、 結果としては Aさん バスケット1 6個 850円 Aさん バスケット2 2個 900円 Bさん バスケット1  5個 1400円 Bさん バスケット3  1個 300円 となってしまいます。 おそらく、副問い合わせをつかって 2段階にわけないとできないのかな?と思うところまではわかったのですが、 構文がよくわかりません・・・。 宜しくお願いします。 例 人   バスケット数 個数 金額 Aさん バスケット1  1個 100円 Aさん バスケット1  3個 300円 Aさん バスケット1  2個 450円 Aさん バスケット2  2個 900円 Bさん バスケット1  5個 1400円 Bさん バスケット3  1個 300円 <結果> Aさん バスケット2つ 8個 1750円 Bさん バスケット2つ 6個 1700円

  • MySQL
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.1

仮にテーブル名をT1とすると SELECT 人, COUNT(*), SUM(個数), SUM(金額) FROM (SELECT T1.人 AS 人, T1.バスケット数 AS バスケット数, SUM(T1.個数) AS 個数, SUM(T1.金額) AS 金額 FROM T1 GROUP BY T1.人, T1.バスケット数) GROUP BY 人 Accessだと「COUNT(DISTINCT バスケット数)」という構文が使えないので 一度「人+バスケット数」で集計して、それを再度「人」で集計します。

makikorin
質問者

お礼

真にありがとうございました! すぐできました^^

関連するQ&A

  • SQL構文について教えて下さい!

    こんばんわ。 いつもお世話になっております。 ServletでIPアドレスを取得してデータベースに登録してあるデータであって尚且つ、AuthorityというカラムにAかBのどちらかがあるデータを抽出するSQLを作成しているのですが上手くいきません。 教えて下さい!お願いします。 作成中のSQL構文を途中から投稿致します。 String RemoteAdd = request.getRemoteAddr(); try { String sql = "SELECT * FROM Api where (Authority = 'A' OR Authority = 'B') AND IPAddress='"+ RemoteAdd +"'"; PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery();

  • SQLの構文の質問です。

    以下のテーブルがあります。 table ID key code cls add_date -- ---- ----- ---- ---------- 1 0001 A01 0 2013/01/01 2 0001 A01 0 2013/01/15 3 0001 B01 0 2013/02/01 4 0002 C01 0 2013/01/20 5 0003 XYZ01 0 2013/01/10 6 0003 XYZ01 0 2013/01/20 : このテーブルからkey、codeが重複したものを除いて、一意となる日付が最新のを 取り出したいのですがSQLをどのようにすればよいか教えてください。 結果: 2 0001 A01 0 2013/01/15 3 0001 B01 0 2013/02/01 4 0002 C01 0 2013/01/20 6 0003 XYZ01 0 2013/01/20 分析関数、相関関数を使うのでしょうか。 使わなくてもできるのでしょうか。 今後の為に、両方を教えてください。

  • AccessのSQLについて

    Access2000のSQLについての質問です。 コード 数量 ------------ A 3 A 2 A 1 B 2 B 3 の上記のテーブルからコードの部分を 単に重複なく抽出するにはどのようにdistinctを 使用すればいいのでしょうか? 希望結果(例) コード 数量 ------------ A (1-3のどれでもよい) B (2-3のどれでもよい) select distinct コード、数量 from Table にすると コード 数量 ------------ A 3 A 2 A 1 B 2 B 3 こうなってしまい、希望どおりにいきません。

  • Access SQL

    Access2000です。 クエリである項目が=1ならXX、=2なら○○としたいのでヘルプを参照し SQLビューで IF(項目A=1,10*項目B,IF(項目A=2,20*項目B,0)) としました。 データシートビューを出そうとするとエラーになります。 エラーはIFが未定義関数だというものです。 なお、デザインビューは開けます。 どこがいけないのでしょうか? よろしくお願いいたします。

  • ACCESSのSQLの書き方

    ACCESSでのSQL文の書き方を教えてください。 テーブルtbl_Aとテーブルtbl_Bがあり, tbl_Aで得られた数値とtbl_Bで得られた数値を加えたものを結果として表示します。 どう書けばよろしいのでしょうか。どうしてもエラーになってしまいます。 イメージとしてはこんな感じです。 select (select ~~ from tbl_A where ~~)+(select ~~ from tbl_B where ~~) (もしoracleならば,「from dual」というのを最後に付けるんですが。)

  • ACCESSのクエリで同じSQL文だが結果が異なる

    ACCESS2003にて 選択クエリAをSQLビューで開きSQL文をコピー、 新規作成したクエリBのSQLビューに貼り付けて実行したところ、 AとBで結果の件数が異なりました。 そのままBを保存して終了。 BをSQLビューで開き、 SQL文の末尾の;を削除して実行すると、 Aと同じ件数の結果になりました。 再度Bを保存して終了し、 BをSQLビューで開き、 SQL文の末尾の;を削除して実行すると、 Aと異なる件数(元の結果)になりました。 何が原因なのでしょうか。 SQL文の内容は、サブクエリを含んでいて、サブクエリのFROMは SQLSERVERのリンクテーブルです。 よろしくお願いします。

  • SQL文を教えて下さい

    2つのテーブルを比較して、片方のテーブルにしかない データを検索したいのですが、どのようなSQL文に なるのか 教えて下さい。 下記の例だと、AテーブルとBテーブルの両方にあるデータ以外のデータを検索したいので、下記の結果になります。よろしくお願いします 期待される結果 003 さああ 004 いいい 005 ううう 例 Aテーブル 001 あいう 002 えおお  003 さああ 004 いいい 005 ううう Bテーブル 001 あいう 002 えおお 

  • エクセルVBA SQL構文 複数条件で検索方法

    エクセルVBAで、アクセスのデータを読み込もうとしています。 複数条件で検索する際の、SQL構文がわからず困っています。 検索値・・・ 部署:(データ型)、月:(整数型)、担当:(データ型) SQL構文・・・ " SELECT * FROM touban WHERE busyo = '" & 部署 & "' AND m2 = " & 月 & " AND tanto = '" & 担当 & "' ORDER BY m2 ASC " 検索値にすべて値が入っていれば検索できたのですが、 1つでも空白があれば検索されません。 (検索値=空白のデータはないので、当たり前ですが・・・) そこで、IFステートメントで空白場合、そうでない場合と分けようかと思いましたが 検索値の個数が増えれば、大変です。 SELECT文の中にSELECT文を入れる方法(サブクエリっていうのかな)も考えたのでですが うまくいきません。 どんな方法がありますか?

  • Access がSQLの()括弧を勝手に消す

    Access2010 でクエリをSQLビューで記述し、保存して閉じると 次にSQLビューを開いたときにSQLが変わってます。 改行が消されてたり、()括弧が消されてたり。 改行はまだいいんです。読み難さを我慢するだけなので。 でも()括弧を消した結果、SQL文法エラーになることがあり、 (それも他のDBでは正常に判定されるような、Access独自の構文解釈エラー) そうなるとSQLビューで開けず修正できず、泣く泣くクエリを作り直すハメになります。 ()括弧を勝手に消しておいて、文法エラーだから作り直せ なんて、 Accessは頭悪いとしか思えません。。。 勝手に変更されないようにできませんかね?

  • SQLの構文エラー

    いつもお世話になってます。 現在、VBでSQLを発行し、ACCESSのテーブル(テストデータ)より 値を取得しようとしているのですが、 SQL文の発行時に構文エラーとなってしまいます。 詳細を下記しますので、ご教授頂けたらと思います。 宜しくお願い致します。 【SQL文】 select フィールド1,フィールド2,フィールド3,フィールド4,フィールド5,フィールド6,フィールド7, (CASE WHEN フィールド8='4' or フィールド8='5' then フィールド9*-1 else フィールド9 end)あああ, (CASE WHEN フィールド8='4' or フィールド8='5' then フィールド10*-1 else フィールド10 end)いいい from テストデータ ※フィールド9、フィールド10は数値型、その他はテキスト型です。 実行時エラー'3075' クエリ式'(CASE WHEN フィールド8='4' or フィールド8='5' then フィールド9*-1 else フィールド9 end)あああ'の構文エラー:演算子がありません。