
2つのテーブルAとBをマージして新しいテーブルCを作成したいのです。マージするときは、最新の売上日フィールドをもつレコードを取得します。環境はAccess2000です。どんなSQL文を作成すればいいのでしょうか?
また、テーブルAにしかないレコード、又はテーブルBにしかないレコードは、そのままテーブルCに追加したいです。
※下記テーブルAとBは、Access内に存在します。テーブルCはAとBのマージ後の結果作成されるテーブルです。
テーブルA
顧客番号 売上日 商品名 備考
1 2000-01-01 ふでばこ A
2 2000-02-02 鉛筆 A
3 2000-03-03 定規 A
4 2000-04-04 シャーペン A
99 2000-09-09 パソコン A
テーブルB
顧客番号 売上日 商品名 備考
4 2001-04-04 シャーペン B
2 2000-02-02 鉛筆 B
3 2001-03-03 定規 B
1 1999-01-01 ふでばこ B
100 2005-11-11 ワープロ B
テーブルAとBを、最新の売上日の条件でレコードを取得し新しいテーブルCを作成する。
テーブルC
顧客番号 売上日 商品名 備考
1 2000-01-01 ふでばこ A
2 2000-02-02 鉛筆 A
3 2001-03-03 定規 B
4 2000-04-04 シャーペン A
99 2000-09-09 パソコン A
100 2005-11-11 ワープロ B
SQL文で処理可能なのでしょうか?
No.3ベストアンサー
- 回答日時:
サブクエリでネストしても出来ない処理があるのでクエリを分けた方が簡単ですよ。
単純にするなら3つ
'qry1として
SELECT テーブルA.顧客番号, テーブルA.売上日, テーブルA.商品名, テーブルA.備考
FROM テーブルA
UNION SELECT テーブルB.顧客番号, テーブルB.売上日, テーブルB.商品名, テーブルB.備考
FROM テーブルB;
'qry2として
SELECT qry1.顧客番号, Max(qry1.売上日) AS 売上日の最大, qry1.商品名
FROM qry1
GROUP BY qry1.顧客番号, qry1.商品名;
'qry3として
'テーブルCを作成するなら
SELECT qry2.顧客番号, qry2.売上日の最大 AS 売上日, qry2.商品名, qry1.備考 INTO テーブルC
FROM qry2 INNER JOIN qry1 ON (qry2.売上日の最大 = qry1.売上日) AND (qry2.顧客番号 = qry1.顧客番号)
GROUP BY qry2.顧客番号, qry2.売上日の最大, qry2.商品名, qry1.備考;
'既存のテーブルCに追加するならこちらで
INSERT INTO テーブルC ( 顧客番号, 売上日, 商品名, 備考 )
SELECT qry2.顧客番号, qry2.売上日の最大, qry2.商品名, qry1.備考
FROM qry2 INNER JOIN qry1 ON (qry2.売上日の最大 = qry1.売上日) AND (qry2.顧客番号 = qry1.顧客番号)
GROUP BY qry2.顧客番号, qry2.売上日の最大, qry2.商品名, qry1.備考;
サブクエリで処理できるところもありますがその辺はご自分でネストしてみてください。
No.2
- 回答日時:
>UNION句はかなりのヒントになりました。
しかし上記をAccessで実行すると。「 1 2010/04/04 シャーペン A 」の1件のレコードしか取得できませんでした。^^;)すみません言葉足らずでした。
商品名でグループ化する必要があるので、
最新の売上日取得クエリの商品名の列に「集計」という欄がありますが、これを「グループ化」にして下さい。
この回答への補足
ありがとうございます。しかし、商品名でグループ化しても、その隣のフィールドの「備考」が最小の値である「MIN(備考)」で処理すると、次のような場合矛盾が生じます。テーブルBから最新売上日のレコードをとる時、顧客番号と売上日はテーブルBからとり、備考は、テーブルAからとるという矛盾です。あくまでも、テーブルBから最新のレコードをとった場合、「備考」フィールドもテーブルBからとりたいのです。ご丁寧にありがとうございます。^^
補足日時:2005/11/08 01:06No.1
- 回答日時:
ユニオンクエリを作成してテーブルAとBを結合し、その結果を基に売上日の最大で取得するクエリにすると良いです。
ユニオンクエリ:
SELECT * FROM テーブルA UNION SELECT * FROM テーブルB
最新の売上日取得クエリ:
SELECT MIN(顧客番号),MAX(売上日),MIN(商品名),MIN(備考) FROM (上記のユニオンクエリ)
この「最新の売上日取得クエリ」を元にするテーブルCのテーブル作成クエリを作れば良いでしょう。
この回答への補足
UNION句はかなりのヒントになりました。しかし上記をAccessで実行すると。「 1 2010/04/04 シャーペン A 」の1件のレコードしか取得できませんでした。^^;)とりあえず色々やってみます。いい方法がありましたら教えてください。ありがとうございます。
補足日時:2005/11/08 00:37お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessでvlookupみたいなことは...
-
SQLで条件指定結合をしたいがNU...
-
ACCESSのSQLで数値型に変換する...
-
3つの表を1つに縦に連結する
-
Accessでテーブルからテーブル...
-
ACCESS97のテーブルサイズについて
-
SQLで日付を条件に削除したい
-
Accessクエリでの、LIKE条件
-
テーブルを、たとえそれが存在...
-
リンクテーブルを CopyObject ...
-
Accessのクエリで半角円マーク...
-
ACCESSに同時アクセス(編集)を...
-
Accessレコードの追加や変更が...
-
access テーブル内のレコード...
-
本テーブルに変更内容を反映す...
-
テーブル作成クエリで主キーを設定
-
パススルークエリをテーブル作...
-
AccessでのNULLのレコードの表...
-
Accessでテーブルにパスワード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessでテーブルからテーブル...
-
Accessレコードの追加や変更が...
-
Accessでvlookupみたいなことは...
-
ACCESSのSQLで数値型に変換する...
-
デザインビューで、連結式 を...
-
Accessクエリでの、LIKE条件
-
2つのテーブルを比較して一致し...
-
access テーブル内のレコード...
-
テーブル作成クエリで主キーを設定
-
SQLで条件指定結合をしたいがNU...
-
3つの表を1つに縦に連結する
-
ACCESSに同時アクセス(編集)を...
-
Accessの追加クエリで既存のテ...
-
ファイルメーカ 検索実行せず...
-
リンクテーブルを CopyObject ...
-
DAOのTableDefs("TblName").Con...
-
INSERT時にデータ登録とmaxの発...
-
ODBCで接続するとDBに変更/追加...
-
SQLで日付を条件に削除したい
おすすめ情報