2013-01-16 24 views
0

我有3個名爲ICD10,Claims和AuthHeader的表。這3個表格全部結合在一起創建一個用於訪問我的SSAS立方體的視圖表。在ICD10中有重複的行,需要刪除。我如何去除重複項而不會搞亂與ICD10表連接的主鍵?我已經看過這個劇本,但我不認爲這是我需要的從與其他2個表連接的表中刪除重複的行

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 

回答

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] 
) 
------------------------------------------------------------ 

希望這會幫助別人的近期有相同的問題