2017-11-02 19 views
0

テーブル内の重複する項目に一意の識別子を設定できるようにします。したがって、たとえば、以下の表では、SQL重複排除で重複を固有の識別子で埋め込む

PROJ00002492はPROJ00002492(それ自体はControlNumber列)のGlobalFamilDupIDを取得する必要があり、他のすべての重複は同じ値PROJ00002492を取得する必要があります。

PROJ00005876は値PROJ00005876(別名ControlNumber列)を取得する必要があります。

enter image description here

コード:

update mstr 
    SET 
     IsGlobalFamilyUnique = case when (rn > 1) then 0 else 1 end 
    from(
    select 
     ControlNumber, 
     MD5hash, 
     IsglobalFamilyUnique, 
     GlobalFamilyDupID, 
     row_number() over (partition by [MD5Hash] order by ID asc) [RN] 
    from dbo.tblMaster 
    where NuixGuid = TopLvlGuid and IsGlobalFamilyUnique is null 
)mstr 

上記のコードは動作しますが、私はGlobalFamilDupID列を移入する方法を考えることができませんか?私は別のクエリでそれを行う必要がありますか?あなたは

FIRST_VALUE(ControlNumber) over (partition by [MD5Hash] order by ID 

を使用して、SELECTに必要な値を追加することができます

+0

あなたUPDATE内の値を使用できますか? –

+0

エラーはありません。私のコードはこれまでのところ動作しています。私の質問に基づいてGlobalFamilyDupID列に値を設定する方法は考えられません。 – Sam

+0

RN = 1のControlNumberレコードとMD5Hashレコードをすべて先頭に付け、更新ステートメント内のテーブル... – Tyron78

答えて

2

は、次にこれをしようとしたとき、あなたが経験しているどのようなエラーや問題

+0

パーフェクト、ありがとうございます! – Sam

関連する問題