- ベストアンサー
AC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・
Windows98Access2000です。 下記のようなテーブルを元にしたクエリがあります。 主索引(主キー)|手配番号 |行番号|更新回数|発行日 |販売先|・・・ 0101023456 |0101023456| 56| 1|19990301|A001 |・・・ 0101034567 |0101034567| 67| 3|20000503|A235 |・・・ ・ ・ ・ ・ ・ ・ 仮に既存データをA、更新データ(TXT)をBとします。 (更新データは毎朝TXTで決まったフォルダーに落ちてきます。) 同じ項目の更新データBを、下記の条件で最終的に既存データAに新規追加、 上書したいのです。 1.更新データBの主索引は主キーにはなっておらず番号がダブっています。 ただレコードごとに「更新回数」項目に1や2といった番号が入ってますので 、その中から同じ主索引番号がある場合更新回数の一番大きな番号だけを抽出 したい。 2.1で抽出した更新データBを今度は、既存データA(主索引は主キー)に追加す るのですが、上記と同じくすでに重複する主索引番号が存在する場合A、Bデー タの「更新回数」項目を見て一番大きい番号を反映(上書)させたい。 2の既存データに追加だけは追加クエリを作り重複しないデータは追加することが 出来るのですが、重複しているデータは「XX件の重複データが・・・」とでて 追加することが出来ません。(あたりまえですかf^^;) ちょっとわけのわからない説明になってしまいましたのでやりたいことを簡単に いいますと、更新データから既存データへ主索引がダブることなく毎朝送られて くる最新データをテーブルに取り込みたいということなのです。 ちょっと思ったのですが、もしかして私は抽出条件式が分かってないだけなので しょうかf^^; おかしな質問で申し訳ありませんが、ご指導の程よろしくお願い致します。
- tokin
- お礼率67% (38/56)
- その他(データベース)
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>クエリー結果をファイルに出力(1) 先に結果ファイルを作成します >グループ化をするとはどういう処理を言うのでしょうか? クエリー→新規作成→デザインビュー→OK テーブル→テーブルを選択→追加→閉じる 主索引(主キー)と更新回数をダブルクリック Σキークリック 更新回数の集計をクリックし最大を選択 更新回数の並べ替えをクリックし昇順を選択 >クエリー結果をファイルに出力(2) 一番上のクエリー→追加→結果ファイルを指定((1)で作成したもの) です。がんばって下さい。 何かあれば補足して下さい。 但し次回は朝になります。ご了承下さい。
その他の回答 (2)
- stork
- ベストアンサー率34% (97/285)
更新データBは主索引+更新回数で重複しない値になります。主索引ごとの更新回数の最大を取得して、どうのこうのやればいいわけです。 1.更新データBから一時テーブルの作成 select 主索引,max(更新回数) as 最終更新 into 一時テーブル from 更新データB group by 主索引 2.更新されているデータを予め削除する delete 既存データA.* from 既存データA inner join 一時テーブル on 既存データA.主索引 = 一時テーブル.主索引 3.既存データAへ追加データ、更新データをinsert insert into 既存データA (主索引,更新回数.....) select 更新データB.主索引,更新データB.更新回数... from 更新データB inner join 一時テーブル on (更新データB.主索引 = 一時テーブル.主索引) and (更新データB.更新回数 = 一時テーブル.更新回数) と言った感じですかね。
お礼
storkさん回答有難う御座います。 SQLは良く分からないのですが、このSQLは更新データBの方に記述してやると良かったでしょうか。 早速やってみたいと思います。 ありがとうございます。
- k_eba
- ベストアンサー率39% (813/2055)
まず考え方ですが 1つのファイルをクエリー等で選択してどのこうのとやる場合 クエリーを続けると上手く動作をしないことが多々あります。 それの解決策ですが、クエリー結果をファイルに出力し それを元に処理をする方法がゆうこうです。 さて1)の方法ですが 主キーと更新回数だけのクエリーで 主キーをグループ化し 更新回数を集計、最大、昇順でファイルを作成してから 実行された方が良いと思います。 がんばって下さい。
お礼
早速の回答有難う御座います。 >クエリーを続けると上手く動作をしないことが多々あります。 クエリはあまり重ねて使わないほうが良いということですね。 知識が乏しくて申し訳ありませんが、 >クエリー結果をファイルに出力しそれを元に処理をする方法 と、グループ化をするとはどういう処理を言うのでしょうか? ご指導いただけたら幸いです。 よろしくお願い致します。 また、早速やってみます。
関連するQ&A
- AC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・(2)
OSWINDOWS98SE AC2000 こんにちは、前回「AC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・」と言う質問をさせていただいて、教えていただいたSQLを使って色々とやってみたのですがどうしても2番のところで クエリ式'[主索引] delete 既存データA.* from 既存データA inner join 一時テーブル on 既存データA.主索引 = 一時テーブル.主索引 insert into 既存データA(主索引,更新回数) select 更新データB.主索引'の構文エラー:演算子がありません。 と言うコメントがでてしまいさきに進むことが出来なくなってしまいました。 構文エラー?演算子がありません??他を探してみたのですが乏しい知識の範囲では解決を見つけることが出来ずまた、質問させていただいた次第です。 1番の一時テーブルは作成できるのですが、2番以降がうまくいきません どうかご教授お願いいたします。 1.更新データBから一時テーブルの作成 2.更新されているデータを予め削除する 3.既存データAへ追加データ、更新データをinsert 前回の質問 http://oshiete1.goo.ne.jp/kotaeru.php3?q=155505
- ベストアンサー
- その他(データベース)
- Accessのクエリでフィールドの一番大きな数字を抽出させるには?
OSはWin98SE Access2000です。 多分簡単なことなのかもしれないのですが、追加クエリの抽出条件を使って、 その列(更新回数)でいちばん大きな数字のみ別テーブルに抽出(追加)させたいのですがその式がわからず悩んでいます。 例(主キーなし) 店番号|商品番号|更新回数|金額|・・・ 001 |A021 | 2 |300 |・・・ 002 |A034 | 1 |200 |・・・ 001 |A122 | 1 |150 |・・・ 001 |A043 | 3 |500 |・・・ 上記で店番号001が3データ入っている中の更新回数が3のデータのみ別のテーブルに追加したいのですが、最大を求めるのでMaxやDMaxを使用したらよいのかな?などと思ったのですが、その先の式の書き方がわからないのでどなたか教えていただけませんか。 どうぞよろしくお願いします。
- ベストアンサー
- その他(データベース)
- TXTデータを既存の、Access2000のテーブルへインポートしたいのですが・・・
OSはWindows98SE SoftはAccess2000です。 現在Accessに、約5000件くらいの既存データがあります。(主キー:主索引) ----------------------------------------------------------------- 主索引| 発注番号| 発注日 |担当者|販売先|商品番号|商品名・・・ ----------------------------------------------------------------- 00000001|0000000111|20011001| 03 |1001| A001 |ボイド 00000002|0000000222|20011005| 05 |1003| B004 |塩ビパイプ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ そこへ約50件くらいのTXTデータを新しく追加及び、既存データに対して追加変更があったデータに修正(上書き)をしたいのですがどなたか教えていただけないでしょうか。 自分なりに、更新クエリを使ってみたり、VBの本を読んだりしたのですがよくわからず悩んでいます。。 何かヒントとなるものでも結構です。 説明が下手で申し訳ありませんがどうぞよろしくお願い致します。
- ベストアンサー
- その他(データベース)
- 2つの項目が重複するレコードを抽出する方法はありますか?
MySQL4.1で既存データに対し複合キーを新しく設定したいのですが、 ALTER TABLE `test` ADD PRIMARY KEY (`a`,`b`) としても重複データが存在する為、作成できませんでした。 10万件あるテーブルから重複するレコードを手動で削除したいのですが、aとbが重複しているレコードだけ抽出するSQL文はありますでしょうか?
- ベストアンサー
- MySQL
- Excelにおける複数のシートからの重複データ抽出について
当方、Excel初心者です。 複数のExcelシートから、重複データの抽出を行いたいのですが ご教授お願いいたします。 【前提条件】 データAとデータBは同一フォーマットのシート。 【課題】 データA、Bの双方に存在するキーを見つけたい。 【詳細】 [データA] (番号) (商品コード) 1 101 2 102 3 103 4 105 5 105 6 106 [データB] (番号) (商品コード) 1 101 2 101 3 102 4 105 5 104 6 106
- ベストアンサー
- その他(業務ソフトウェア)
- エクセルの重複データを抽出し、最新のデータを残した
エクセルの重複データを抽出し、最新のデータを残したいです。 A列 B列 1 aaa@aaaa.co.jp 2014/1/1 2 bbb@aaaa.co.jp 2013/1/2 3 aaa@aaaa.co.jp 2014/1/10 4 aaa@aaaa.co.jp 2014/10/10 A列にアドレス、B列に日付が入っているデータがあります。 (他にC列などにも顧客情報が入っています。) アドレスの重複データを抽出し、最新の日付の行が残るようにしたいです。 この場合ですと2と4が残るようにしたいです。 膨大なデータの為、困っています。 良い方法をご存知の方、よろしくお願い致します。
- 締切済み
- Excel(エクセル)
- エクセル 重複データの抽出
エクセルを使って重複データをチェックしようと思っていCOUNTIFで試したのですがうまくいきません・・・ご存知の方教えてください。m(__)m A B C D E F 店番 顧客番号 氏名(カナ) 電話番号 住所1 住所2 という表の電話番号が重複する先を抽出したいのです。データ件数は約3000件ほどあります。できれば重複したデータは別のシートに店番順に表示をしたいのですが関数でできるのでしょうか?
- ベストアンサー
- オフィス系ソフト
- 条件に一致したデータの検索・抽出について
エクセルで2つのデータから条件に一致したデータを検索・抽出がしたいのですが、うまく抽出することができないため、質問させていただきます データA |入荷日|商品番号|商品名|数量|金額| |1.1|1111|〇〇〇|10|10| |1.2|2222|◎◎◎|15|15| |1.3|3333|△△△|20|20| |1.4|4444|◆◆◆|10|10| データB |販売日|商品番号|商品名|販売数| |3.1|1111|〇〇〇| | |3.2| |AAA|100| |3.3| |BBB|120| |3.1|2222|◎◎◎| | |3.3| |CCC|100| |3.1|3333|△△△| | |3.1|4444|◆◆◆| | データBから商品番号の一致したデータの一部を抽出してデータAに追加したいです (一部が難しいようなら1行そのまま抽出でも大丈夫です) 理想は |入荷日|商品番号|商品名|数量|金額|販売数| |1.1|1111|〇〇〇|10|10| | | | |AAA| | |100| | | |BBB| | |120| |1.2|2222|◎◎◎|15|15| | | | |CCC| | |100| |1.3|3333|△△△|20|20| | |1.4|4444|◆◆◆|10|10| | もしくは、関数を利用して以下の形にできれば、と思います |入荷日|商品番号|商品名|数量|金額|商品名|販売数|商品名|販売数| |1.1|1111|〇〇〇|10|10|AAA|100|BBB|120| |1.2|2222|◎◎◎|15|15|CCC|100| | | |1.3|3333|△△△|20|20| | | | | |1.4|4444|◆◆◆|10|10| | | | | データAをベースに、データBから重複データのうちすでにデータAにあるものを省き(1件目は重複データなので2件目以降)抽出する 1.データB商品番号重複しています。重複データの1件目はデータAと共通で、2件目以降を抽出したいです 2.データB商品番号の重複はそれぞれ違うため、1件も重複してないものもあれば3件ほど重複しているものもあります 3.データAは入荷日の範囲を指定したデータですが、データBは入荷日項目がないため抽出する必要のない内容・件数のデータもはいっています。その為、データAから抽出するのではなく、データAをベースにデータBから抽出がしたいです。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- 重複しないデータの抽出について
こんにちわ。 エクセルでつぎのようなリストがあるとします。A,B列セットで重複しないデータを一度に抽出したいのですが、どうしたらいいですか? A列 B列 1 1 1 2 1 2 3 2 1 4 1 2 5 2 2 6 1 1 結果 A列 B列 1 1 1 2 2 1 2 2
- ベストアンサー
- オフィス系ソフト
お礼
k_ebaさん親切に手順を踏んでの説明有難う御座います。 とても分かり易く感謝いたします。 万一、うまく出来ないときはまた質問させてください。 どうぞよろしくお願い致します。 有難う御座いました。