2016-10-13 19 views
2

今日のご挨拶!!!!SQLデータ重複クエリ

Iは異なる状態を持つデータの複数の列を有するテーブルを有しています。

は、私が「有効」ステータスを持つデータの500行を持っていると私は'chkDuplicate'とのデータの150行があるとします。

今私は住所、市、州のように、複製のためのいくつかの列を比較することにより、有効または無効にこれらの150のレコードのステータスを更新するクエリを記述する必要があります。これを達成するための方法

、それだけでなく、大規模なデータテーブルをサポートする必要があります。事前に

おかげで....

CREATE TABLE XYZ 
(
    ID bigint, 
    ADDRESS navrchar, 
    CITY navrchar, 
    STATE nvarchar, 
    ZIP nvarchar, 
    STATUS 
) 

ステータスが重複クエリに基づいて更新する必要があります

テーブル定義。

重要!!!!重複データの場合、最初のレコードは有効である必要があります。無効なデータを再度処理する場合は、有効なレコードを妨害すべきではありません。

enter image description here

私は上記の表を照会実行した場合と同じでなければなりません。レコード1,3は成功、3,4は重複する必要があります。たとえ私が少しでも1,3を追加したとしても、常に成功する他の重複は「重複」に更新する必要があります。

+0

使用しているDBMSにタグを付けるとともに、サンプルデータと期待される結果を表示してください。 – TheGameiswar

+1

テーブル定義、サンプルテーブルデータ(およびフォーマットされたテキスト)、および予想される結果を追加してください。また、使用しているdbmsにタグを付け、現在のクエリの試行を表示します。 – jarlh

+1

タグDBMSと試した質問を投稿してください –

答えて

0

このクエリは重複した行を返しました。

select tbl.data1, tbl.data2, tbl.data3 
from TestTable1 tbl 
inner join (
    SELECT data1 , data2, data3 , COUNT(*) AS dupCount 
    FROM TestTable1 
    GROUP BY data1, data2, data3 
    HAVING COUNT(*) > 1 
) oc on tbl.data1 = oc.data1 and tbl.data2 = oc.data2 and tbl.data3 = oc.data3 

そして、それは私の再プロセスの複製を複数回呼び出す場合でも、私の作品ORDER BY句のためのカーソルと更新の重複行

Cursor Expamle

+0

返信ありがとうございます、まだ要件を取得することができません.Plzは更新された質問を確認します。 – user1875628

+0

あなた自身の情報テーブルを記入することができます...これは解決策であり、カラム、テーブル名、または誰でも変更できます –

+0

すべてがテーブル名や重複カラムのように動的なので、カーソルを使用できません。 – user1875628

0

追加IDを使用します。

AS TABLE_DATA_DUPLICATE WITH

UPDATE TABLE_DATA_DUPLICATE設定状態=(CASE(YOURTABLE(NOLOCK)から、

をNO_OF_REPEATS(

PARTITION BY STREET1,CITY,STATE,ZIP 

    ORDER BY STREET1,CITY,STATE,ZIP,ID 

)上で*、ROW_NUMBER()を選択) WHEN NO_OF_REPEATS = 1 THEN 'VALID' ELSE 'DUPLICATE' END)

サポートありがとうございました....乾杯!!!!