2017-02-02 19 views
0

アドレスとアカウント名に基づいてテーブルを正規化しようとしています。問題は、アドレスが切り捨てられたり、省略されたり、エラーが発生することがあります。私は口座を使ってグループを作ってくれました。それは私をもっと近づけましたが、私はダブを持った何千ものレコードを持っています。重複を含む重複をグループ化する方法を見つけようとしています

アドレスをグループ化し、各アドレスグループに一意のアカウント名を付けることができます。私は重複を取ってそれらを追加するつもりです私のfkとしてアカウントを使用してアカウントの連絡先を持っています。

これまで私がこれまで持っていたことはありますが、それほど近くはありません。誰かが前にこれをしなければならなかった。私は非常に任意のヒントを感謝します。ここで

   SELECT *, 
       --SELECT DISTINCT k.Placeholder,f.Address_1, 
       CASE 
        WHEN k.Placeholder IS NULL 
        THEN Clinic_Name 
        ELSE k.Placeholder 
       END AS AccountName 
       FROM [FL_Data].[dbo].[26K] f 
       LEFT JOIN 
        (SELECT fl.Address_1, 'Placeholder-' + CAST(MIN(fl.id) as varchar) as Placeholder 
         FROM [FL_Data].[dbo].[26K] fl 
         GROUP BY fl.Address_1 
         having count(*) > 1 
        ) k 
       ON f.Address_1 = k.Address_1 

アドレスのいくつかの例は以下のとおりです。すでに述べた

3011 NW 63rd St 
3011 NW 63rd Street 
3013 Winghaven 
3013 WINGHAVEN BLVD 
301 Northlake Ave. Ste-101 
301 Northlake Avenue Ste.101 
+1

http://stackoverflow.com/questions/41249742/address-standardization-within-a-database/41249971#41249971 –

+1

サンプルデータ、特に問題が発生しているサンプルデータを投稿することはできますか? ? –

+1

私は、ジョンは私が行くべき道を私に指摘してくれたと思う。アドレスの標準化は避けられないようです。 – user1040975

答えて

0

として - GoogleマップAPIを使用することができます。 https://maps.googleapis.com/maps/api/geocode/json?address=

出力は同じになります(例えば " "place_id"またはジオメトリの詳細)。それによると、あなたは重複を見つけることができます。

アクセスについて - あなたはsiを書くことができますアドレスを入力として受け取り、google APIに送信するC#のmpleメソッド。このメソッドはCLR関数としてコンパイルできます。そうすれば、すべての行を比較できます。 少し時間がかかりますが、非同期処理の場合は問題ありません。

関連する問題