Access2007を使用しています。
2つのテーブルに品番と数量がそれぞれ登録されています。
【テーブルA】
品番 / 数量
あ001/ 4
い001/ 5
あ001/ 1
【テーブルB】
品番 / 数量
う000/ 10
あ001/ 1
い001/ 4
い001/ 1
この2つのテーブルから、品番ごとの数量を比較して、異なるデータの品番と差異を取り出したいのです。
【結果】
あ001/ 4(←A-B=4)
う000/ 10
A,Bのテーブルで品番ごとに集計した結果から、数量が不一致のものを取り出す方法がわかりません。
どうぞよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
■01.AとB用の集計クエリをそれぞれ作成
作成理由:同じテーブルに同品番が存在している事から先に集計クエリを用意する
※テーブルAで言えば「あ001」が重複/テーブルBで言えば「い001」が重複
集計クエリー:品番(グループ)/数量(合計)で、AとB用を作成
(A-SumQuery,B-SumQueryとでもしておく)
■02.上記集計クエリーに対し、品番一致クエリと品番不一致クエリのSQL文を構想しておく
※クエリ自体は未作成(SQL文を把握するのに一時的に作成し確認)
02.01.品番一致するものでAB値の計算を行い計算値が0の物は除外するSQL文を構想する
<例SQL文>
SELECT [A-SumQuery].A品番, [A数量の合計]-[B数量の合計] AS 小計
FROM [A-SumQuery] INNER JOIN [B-SumQuery] ON [A-SumQuery].A品番 = [B-SumQuery].B品番
WHERE ((([A数量の合計]-[B数量の合計])<>0))
02.02.テーブルAから見たテーブルBに存在しない品番不一致SQL文を構想する
<例SQL文>
SELECT [A-SumQuery].A品番, [A-SumQuery].A数量の合計
FROM [A-SumQuery] LEFT JOIN [B-SumQuery] ON [A-SumQuery].A品番 = [B-SumQuery].B品番
WHERE ((([B-SumQuery].B品番) Is Null));
02.03.テーブルBから見たテーブルAに存在しない品番不一致SQL文を構想する
<例SQL文>
SELECT [B-SumQuery].B品番, [B-SumQuery].B数量の合計
FROM [B-SumQuery] LEFT JOIN [A-SumQuery] ON [B-SumQuery].B品番 = [A-SumQuery].A品番
WHERE ((([A-SumQuery].A品番) Is Null));
■03.02で構想したSQL文をユニオンクエリで一元化する
品番一致クエリ(02.01)と、品番不一致A(02.02)と、品番不一致B(02.03)の3種のクエリを、ユニオンで纏め上げる
<例SQL>
SELECT [A-SumQuery].A品番 AS 品番, [A数量の合計]-[B数量の合計] AS 数量
FROM [A-SumQuery] INNER JOIN [B-SumQuery] ON [A-SumQuery].A品番 = [B-SumQuery].B品番
WHERE ((([A数量の合計]-[B数量の合計])>0))
UNION SELECT [A-SumQuery].A品番, [A-SumQuery].A数量の合計
FROM [A-SumQuery] LEFT JOIN [B-SumQuery] ON [A-SumQuery].A品番 = [B-SumQuery].B品番
WHERE ((([B-SumQuery].B品番) Is Null))
UNION SELECT [B-SumQuery].B品番, [B-SumQuery].B数量の合計
FROM [B-SumQuery] LEFT JOIN [A-SumQuery] ON [B-SumQuery].B品番 = [A-SumQuery].A品番
WHERE ((([A-SumQuery].A品番) Is Null));
■まとめ
それぞれの役割を持ったクエリ(SQL文)を作成し、ユニオンクエリとして纏め上げて利用する
No.2
- 回答日時:
>A,Bのテーブルで品番ごとに集計した結果から、数量が不一致のものを取り出す方法がわかりません。
この質問と、お望みの結果は異なりますよね?
>あ001/ 4(←A-B=4)
>う000/ 10
集計結果を取り出すのではく 集計した差分を取り出そうとしていますね。
A-B=4 とされているので
であれば、う000は A-B=-10ではないでしょうか?
あ001/ 4
う000/ -10
差を取るのであれば、どちらか基準側が必要ですので
A-Bで差が0以外を抽出すると
SQLビュー
SELECT 品番, 差分 from
(
SELECT 品番, Sum(数量) AS 差分
FROM
(SELECT テーブルA.品番, テーブルA.数量
FROM テーブルA
union all
SELECT テーブルB.品番, テーブルB.数量 * -1
FROM テーブルB)
GROUP BY 品番
)
where 差分 <> 0
order by 品番
2007での結果
品番 差分
あ001 4
う000 -10
結果をこちらで読み替えました
意味が違っていたら、読み捨ててください。
また、SQlビューに貼り付けて実行できるように 1SQLで書きましたが
個別にクエリーにされても 問題ありません。
>であれば、う000は A-B=-10ではないでしょうか?
お恥ずかしいです。そのとおりです。間違えていました。
そしてうまくいきました!大変助かりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- その他(データベース) Microsoft Accessについて 1 2022/06/06 16:20
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Excel(エクセル) Excelでデータを抽出するに良い方法 9 2023/02/06 12:42
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- JavaScript テーブルの中のセレクトボックスの値が0のとき、非表示にしたい 3 2022/05/29 10:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
MERGE文を単体テーブルに対して...
-
外部結合とor条件混在の記述方法
-
SQL GROUPで件数の一番多いレコ...
-
複数テーブルのMAX値の行データ...
-
データベースの基礎かもしれま...
-
SELECTの結果で同一行を複数回...
-
Accessで別テーブルの値をフォ...
-
SELECTで1件のみ取得するには?
-
JSPのNULLレコード表示について...
-
GROUP BYを使ったSELECT文の総...
-
Oracleでの文字列連結サイズの上限
-
ADO VBA 実行時エラー3021
-
複数行を1行にするSQL
-
質問です。 下記のテーブルとデ...
-
DATE型にNULLをセットするには?
-
PostgreSQLで小数点以下を処理...
-
Excelで、改行がある場合の条件...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
SELECTの結果で同一行を複数回...
-
MERGE文を単体テーブルに対して...
-
固定値を含む結合と複数テーブ...
-
複数テーブルのMAX値の行データ...
-
他のテーブルを参照した値はupd...
-
unionの結果は集計はできないで...
-
外部結合とor条件混在の記述方法
-
oracleの分割delete
-
SET句内で複数の条件を指定して...
-
SQL GROUPで件数の一番多いレコ...
-
DELETE 文とEXISTSの使い方につ...
-
COUNTの取得方法(?)について...
-
集計後の数値が倍になる
-
SQLの書き方(チェックボックス)
-
unionでマージした副問合せを結合
-
結合と副問い合わせの違い
-
副問い合わせのinsert文
おすすめ情報