• 締切済み

accessで重複データの削除について

accessというよりSQLについてなのかと思いますが、教えていただけないでしょうか。 重複するIDがあり、1件を除いて他のデータを削除してデータを抽出したいです。 抽出条件としては、[年月日]カラムがあるため、日付が一番直近のものを残したいです。  ※こちらも重複しております。 また、[フィルタ]カラムが「2」のレコードのみを対象としたいと思っています。 accessの場合、重複クエリを用いるのかと思い、クエリウィザードから作成しましたが 一意とはなりませんでした。 SELECT テーブル1.[共通ID], テーブル1.[連番], テーブル1.[郵便番号], テーブル1.[住所], テーブル1.[担当者名], テーブル1.[年月日], テーブル1.[フィルタ] FROM テーブル1 WHERE (((テーブル1.[共通ID]) In (SELECT [共通ID] FROM [テーブル1] As Tmp GROUP BY [共通ID] HAVING Count(*)>1 )) AND ((テーブル1.[フィルタ])=2)) ORDER BY テーブル1.[共通ID], テーブル1.[年月日] DESC; distinctも使ってみましたがうまくできませんでした。 何が原因でしょうか。 申し訳ありませんがご教示いただきたくお願いいたします。

  • psb01
  • お礼率80% (4/5)

みんなの回答

回答No.1

重複クエリは、重複するレコードを抽出するもので、 今回は重複するレコードのうち最新以外は削除するということですので、 全然違いますね。 下記でどうでしょうか。 SELECT テーブル1.[共通ID], テーブル1.[連番], テーブル1.[郵便番号], テーブル1.[住所], テーブル1.[担当者名], テーブル1.[年月日], テーブル1.[フィルタ] FROM テーブル1 WHERE テーブル1.[年月日] In (SELECT TOP 1 年月日 FROM [テーブル1] As Tmp WHERE Tmp.共通ID = テーブル1.共通ID And Tmp.[フィルタ]=2 OEDER BY 年月日 DESC) ORDER BY テーブル1.[共通ID], テーブル1.[年月日] DESC; または、 SELECT テーブル1.[共通ID], テーブル1.[連番], テーブル1.[郵便番号], テーブル1.[住所], テーブル1.[担当者名], テーブル1.[年月日], テーブル1.[フィルタ] FROM テーブル1 INNER JOIN (SELECT 共通ID, Max(年月日) As Max年月日 FROM テーブル1 WHERE [フィルタ]=2 GROUP BY [共通ID] ) As Tmp ON テーブル1.共通ID=Tmp.共通ID AND テーブル1.年月日=Tmp.Max年月日 ORDER BY テーブル1.[共通ID], テーブル1.[年月日] DESC;

関連するQ&A

  • Accessのフィルタ検索でデータの重複除外をしたい

    OS:winowsXP Access Version:2000 お世話になります。表題の件でお伺いしたいのですが、重複 データが表示されてしまって困っています。 行いたいことは、Accessのテーブルのフィルタ画面にて TBL(userm)の中の企業ID(kigyo_id)という項目から 重複したのを排除して表示するということです。 in (select distinct kigyo_id from userm) と記述してフィルタを実行しても、重複データが表示されてしまいます。 色々調べてgroup byも試してみましたが表示されません。 どなたかご教授願えませんでしょうか?

  • 複数のテーブルからデータを取得したい

    1つのテーブルから重複したデータを取り除いて表示するときに使う 【select distinct カラム名 from テーブル名;】 がありますよね。 それと同じようなことを複数のテーブルをまたいで行いたいのですがうまくいきません。 ちなみに両方のテーブルのカラム名は同じです。 【select distinct カラム名 from テーブル1 union select distinct カラム名 from テーブル2;】 としても重複を取り除いた後にテーブルを結合してるので結果的に両テーブルの重複した値を取り除くことができず。 そこで 【select distinct T1.カラム名, T2.カラム名 from テーブル1 T1. テーブル2 T2;】 としてみたのですが、クエリを実行中のまま反応がないので悩んでます。 ちなみに2つのテーブルのデータはそれぞれ2万件ほどです。 こういう時どういうsql文を組むのが正しいのでしょうか?

    • ベストアンサー
    • MySQL
  • アクセスで重複のカウント

    アクセスで重複排除後のカウントを行いたいのですが・・。例えば、TEST1テーブルのaaaカラムの重複排除後のカウントを知りたい場合、一般的には、SELECT COUNT(DISTINCT aaa) FROM TEST1となると思いますが、アクセスではどのような記述ができるのでしょうか?宜しくお願いします。

  • accessクエリでのデータ重複について

    お世話になります。 ACCESSクエリにてデータが重複してしまします。 SQL表示にて、SELECTの後、DISTINCTやDISTINCTROWを 加えましたが、それでも重複してしまいます。 何故なのでしょうか。 どなたか良い解決方法をお教え頂きたく宜しくお願い 致します。

  • accessのデータで重複している行を削除したい

    accessのテーブルで、データシートに顧客のデータが入っています。 そこに、まったく同じデータが存在していますので、それを削除したい のですが、簡単に抽出して削除する方法等あるのでしょうか?? 重複クエリを試してみましたが、ちょっと違うようなので、 なにかいい方法を教えてください。 初歩的な質問で申し訳ありませんがよろしくお願いいたします。

  • アクセスの重複クエリ

    二つのテーブルやクエリで重複するデータを 抽出するのは「重複クエリ」でいいのでしょうか? それとも「重複クエリ」は一つのテーブルの中の重複するデータを 抽出するものなのでしょうか?

  • inner joinでサブクエリ

    SQLについてお教え頂けませんでしょうか? 在庫テーブル ・ID ・数量 データ 001,1 001,3 002,3 002,2 002,4 003,2 商品テーブル ・ID データ 001 002 003 004 やりたいこと: 在庫テーブルには重複しているIDがあります。 商品テーブルには重複しているIDはありません。 在庫テーブルの重複を削除したIDと商品テーブルのIDをinner joinで結びたいと思います。 ・select distinct ID FROM 在庫テーブル ・select ID FROM 商品テーブル この2つのjoin方法がわかりません。 結果として、 001 002 003 を取得したいいです。宜しくお願いします。 ちなみに select ID from 商品テーブル inner join 在庫テーブル 商品テーブル.ID = exists(select distinct ID from 在庫テーブル) というコードを書きましたが、動きませんでした・・・抽出データが0件でした・・・

  • inner joinについて

    SQLのデータ抽出方法についてお教え下さい。 TABLE_2をdistinctで重複を無くして、TABLE_1とinner joinさせたいです。 select distinct TABLE_2.id と select TABLE_1.ID from TABLE_1 inner join distinct TABLE_2.ID といったようなことをやりたいです。 TABLE_1 ID 001 001 002 002 002 TABLE_2 ID 001 001 002 002 002 環境はMYSQL5.5になります。よろしくお願いいたします。

  • 重複削除をマクロで

    はじめまして。 データをACCESSにインポートしてテーブル をクエリ重複削除しその後 テーブルを構成でコピー貼り付けして「主キー」設定して テーブルに重複削除できたデータが完成できるのですが これらをマクロできませんか? テーブルを構成で貼り付けする際、データがでかいと 固まってしまいます。 DISTINCTもためしてみましたがうまくいきません。 よろしくお願いします。

  • Access2000で重複データに・・・

    Access2000の重複データの処理について質問です。 あるフィールドの重複レコードを検索し、該当するレコードの別フィールドに「●」をつけようとしています。ただ、重複する最初のレコードには「●」をつけたくないのです。 例えば  aaa ・・・ (1)  bbb  aaa ・・・ (2)  ccc  aaa ・・・ (3)  eee というフィールドだった場合、(1)には「●」をつけずに(2)以降にのみつけたいのです。 重複クエリで重複レコードを抽出して重複テーブル作成→重複テーブルと元テーブルを組み合わせて更新クエリ作成という方法でやったのですが、そうすると(1)にも「●」がついてきます。(当然ですが・・・) 何か名案があれば教えてください。 やはり、VBAを使わないと無理でしょうか・・・?