データのグループを含む1つのSQLServer(2008)テーブルがあります。
Source PersonId Date Description Code IsDup
------ -------- ----- ----------- ------ -----
EHR 1234 1/1/2012 Fever 120.12
EHR 1234 6/1/2012 Fracture 101.00
EHR 1234 11/4/2012 Hypertension 223.15
RAM 1234 1/1/2012 Fever 120.12 <-- Duplicate
RAM 1234 6/1/2012 Fracture 101.00 <-- Duplicate
RAM 1234 4/1/2012 Diabetic 601.00
TAR 1234 2/1/2012 Asthma 456.00
TAR 1234 1/1/2012 Fever 120.12 <-- Duplicate
異なるグループ間でデータを比較する必要があります。「EHR」はマスターグループなので、他のグループにテーブル内の「EHR」マスターグループのデータと完全に一致するデータがあるかどうかを確認する必要があります。次に、IsDup列を1で更新する必要があります。
期待される結果:
Source PersonId Date Description Code IsDup
------ -------- ----- ----------- ------ -----
EHR 1234 1/1/2012 Fever 120.12
EHR 1234 6/1/2012 Fracture 101.00
EHR 1234 11/4/2012 Hypertension 223.15
RAM 1234 1/1/2012 Fever 120.12 1
RAM 1234 6/1/2012 Fracture 101.00 1
RAM 1234 4/1/2012 Diabetic 601.00
TAR 1234 2/1/2012 Asthma 456.00
TAR 1234 1/1/2012 Fever 120.12 1
テーブル内の重複をチェックする方法は知っていますが、1つのグループを静的に保ちながら比較を行う方法がわかりません。
重複を識別するためにstackoverflowスレッドの1つからこれを取得しましたが、グループ化された比較を追加する方法は次のとおりです。
with x as (select *, rn = row_number()
over(PARTITION BY [PersonId], [Date], [Description], [Code] order by [PersonId], [Date], [Description], [Code])
from Results)
select * from x
where rn > 1