• ベストアンサー

条件抽出について

条件抽出について教えて下さい。 会社で使っているデータベースですが、 1.7月分の顧客名簿と、8月分の顧客名簿を比較し、8月分新規の会社名のものだけ抽出する。 2.8月顧客名簿に、同じ会社名があった場合、一つのみ表示する。 以上の2つです。 今は、手作業で行っていて、時間がかかってしまいます。 わかる方がいましたら、どうかお願いいたします。

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

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

txtファイルですか。 大きく分けて、ソートして処理するやり方と、ソートしないで処理するやり方が 有ります。 ソートするやりかた。 (1)マッチング処理を行ないます。但し、両ファイルに同じ会社名が複数づつ   存在すると処理が結構面倒です。 (2)ソートした後、上から連続した2つのレコードを比較していきます。   会社名が同じなら前詰します。全行数もー1します。 ソートしないやりかた。 (1)2重ループで会社名を比較します。8月が外側で7月が内側です。   外側で指定した会社名が内側のループで見つからない時にその会社名を新規と   判断します。 (2)2重ループで名簿内の2つの行の会社名を総当りで比較していきます。   同じ会社名があれば後ろの行のところで前詰をします。全行数もー1します。 判りにくければ、補足してください。

その他の回答 (4)

回答No.5

ACCESSは使えますか? ファイルをテーブルにインポート(それぞれ別テーブル)orリンクしたあと、 不一致クエリーで「8月分のみに存在する」を抽出+グループ化するのが、一番簡単かと思います。 バリバリにプログラムが組める方でしたら、ごめんなさーい。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.4

> せっかく答えて下さったのですが、txtファイルのデータでした。 という事らしいので、Excelをお持ちなら、そちらに貼付けて、抽出/ソート/集計するような仕掛けを作るとか。 ほかにも、WSHかDOSのバッチでかけるかもしれませんが、 実際のデータのフォーマットが謎なんで、本当にできるかどうかは不明。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

顧客名簿に 会社名 varchar; 月 integer; というフィールドがあるとして、 1. select distinct TAug.会社名 from 顧客名簿 TAug   where TAug.月 = 8 and not exist (select TJul.会社名 from 顧客名簿 TJul     where TJul.月 = 7 and TJul.会社名 = TAug.会社名); ――でどうでしょう。

  • HUTABA
  • ベストアンサー率27% (436/1611)
回答No.1

えぇど、データベース…という事ですから、SQL…でしょうか? >1.7月分の顧客名簿と、8月分の顧客名簿を比較し、8月分新規の会社名のものだけ抽出する。 7月にはない顧客が新規顧客ですよね? 7月の顧客名簿と8月の顧客名簿が別のテーブルだとすると… Select 会社名 From 8月の顧客名簿 Where 会社名=( Select 会社名 From 7月の顧客名簿) >2.8月顧客名簿に、同じ会社名があった場合、一つのみ表示する。 Select 会社名 From 8月の顧客名簿 Group by 会社名 でどうでしょう。 1はちょっと自信ないです。 ごめんなさい。

rikisuke15
質問者

補足

どうもありがとうございます。 せっかく答えて下さったのですが、txtファイルのデータでした。 申し訳ありません。