- ベストアンサー
条件抽出について
条件抽出について教えて下さい。 会社で使っているデータベースですが、 1.7月分の顧客名簿と、8月分の顧客名簿を比較し、8月分新規の会社名のものだけ抽出する。 2.8月顧客名簿に、同じ会社名があった場合、一つのみ表示する。 以上の2つです。 今は、手作業で行っていて、時間がかかってしまいます。 わかる方がいましたら、どうかお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
txtファイルですか。 大きく分けて、ソートして処理するやり方と、ソートしないで処理するやり方が 有ります。 ソートするやりかた。 (1)マッチング処理を行ないます。但し、両ファイルに同じ会社名が複数づつ 存在すると処理が結構面倒です。 (2)ソートした後、上から連続した2つのレコードを比較していきます。 会社名が同じなら前詰します。全行数もー1します。 ソートしないやりかた。 (1)2重ループで会社名を比較します。8月が外側で7月が内側です。 外側で指定した会社名が内側のループで見つからない時にその会社名を新規と 判断します。 (2)2重ループで名簿内の2つの行の会社名を総当りで比較していきます。 同じ会社名があれば後ろの行のところで前詰をします。全行数もー1します。 判りにくければ、補足してください。
その他の回答 (4)
- gooco_chan
- ベストアンサー率25% (36/144)
ACCESSは使えますか? ファイルをテーブルにインポート(それぞれ別テーブル)orリンクしたあと、 不一致クエリーで「8月分のみに存在する」を抽出+グループ化するのが、一番簡単かと思います。 バリバリにプログラムが組める方でしたら、ごめんなさーい。
- osamuy
- ベストアンサー率42% (1231/2878)
> せっかく答えて下さったのですが、txtファイルのデータでした。 という事らしいので、Excelをお持ちなら、そちらに貼付けて、抽出/ソート/集計するような仕掛けを作るとか。 ほかにも、WSHかDOSのバッチでかけるかもしれませんが、 実際のデータのフォーマットが謎なんで、本当にできるかどうかは不明。
- osamuy
- ベストアンサー率42% (1231/2878)
顧客名簿に 会社名 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)
えぇど、データベース…という事ですから、SQL…でしょうか? >1.7月分の顧客名簿と、8月分の顧客名簿を比較し、8月分新規の会社名のものだけ抽出する。 7月にはない顧客が新規顧客ですよね? 7月の顧客名簿と8月の顧客名簿が別のテーブルだとすると… Select 会社名 From 8月の顧客名簿 Where 会社名=( Select 会社名 From 7月の顧客名簿) >2.8月顧客名簿に、同じ会社名があった場合、一つのみ表示する。 Select 会社名 From 8月の顧客名簿 Group by 会社名 でどうでしょう。 1はちょっと自信ないです。 ごめんなさい。
補足
どうもありがとうございます。 せっかく答えて下さったのですが、txtファイルのデータでした。 申し訳ありません。