0

ICD10、Claims、AuthHeaderという名前の3つのテーブルがあります。これらの3つのテーブルはすべて結合されて、SSASキューブに移動するために使用される1つのビューテーブルを作成します。ICD10には重複する行があり、削除する必要があります。ICD10テーブルと結合されている主キーを台無しにせずに重複を削除するにはどうすればよいですか?私はこのスクリプトを見ましたが、それが私が必要としているものではないと思います

DECLARE @table TABLE (
      id INT IDENTITY(1, 1)
    , data VARCHAR(20)
    )

DELETE  FROM @table

FROM    @table o

        INNER JOIN ( SELECT data
                     FROM   @table
                     GROUP BY data
                     HAVING COUNT(*) > 1
                   ) f ON o.data = f.data
        LEFT OUTER JOIN ( SELECT    [id] = MAX(id)
                          FROM      @table
                          GROUP BY  data
                          HAVING    COUNT(*) > 1
                        ) g ON o.id = g.id
WHERE   g.id IS NULL 
4

1 に答える 1

0

これが問題を解決するために私がしたことです...

---------------------------------------
-- INSERT DUPLICATES INTO TEMP TABLE --
--------------------------------------------------------
IF OBJECT_ID('tempdb..#TEMP') IS NOT NULL 
DROP TABLE #TEMP

SELECT DiagnosisCode
      ,DiagnosisDesc
      ,icd10ThreeCharacter
      ,icd10AdditionalGroup
      ,icd10DiseaseGroup
      ,icd10Level2
      ,icd10Chapter
      ,PMBCDLCode
      ,PMBCDLDescription
      ,PMBCDLRank

INTO #TEMP        
FROM MSOEDW.shared.ICD10
GROUP
  BY DiagnosisCode
    ,DiagnosisDesc
    ,icd10ThreeCharacter
    ,icd10AdditionalGroup
    ,icd10DiseaseGroup
    ,icd10Level2
    ,icd10Chapter
    ,PMBCDLCode
    ,PMBCDLDescription
    ,PMBCDLRank

 HAVING COUNT(DiagnosisCode) > 1

 SELECT [DiagnosisCode]
       ,[DiagnosisDesc]
       ,[icd10ThreeCharacter]
       ,[icd10AdditionalGroup]
       ,[icd10DiseaseGroup]
       ,[icd10Level2]
       ,[icd10Chapter]
       ,[PMBCDLCode]
       ,[PMBCDLDescription]
       ,[PMBCDLRank]
  FROM #TEMP

-----------------------
-- DELETE DUPLICATES --
---------------------------------------------------------
DELETE 
FROM [MSOEDW].[shared].[ICD10]
WHERE EXISTS (
SELECT DISTINCT TMP.*
FROM [MSOEDW].[shared].[ICD10] ICD  
JOIN #TEMP TMP
  ON ICD.DiagnosisCode = TMP.DiagnosisCode
JOIN [MSOEDW].[auth].[AuthHeader] head 
  ON ICD.[icd10Key] = head.[icd10Key]
JOIN [MSOEDW].[claim].[Claim] clm
  ON icd.[icd10Key] = clm.[icd10Key]
  )
------------------------------------------------------------

これが近い将来、同じ問題を抱えている他の誰かに役立つことを願っています

于 2013-01-17T11:37:10.517 に答える