[編輯]:這個答案幫助
或者,如果您沒有主鍵,請使用此解決方案。您可以使用復合鍵列計算一個,并執行與上述相同的想法。請記住,當涉及 NVARCHAR 列時,需要將數字資料型別轉換為 nvarchar()。
SELECT --Before Delete
CAST(T.[status_id] AS NVARCHAR(1)) T.ref_entity_aa CAST(T.ref_entity_ab AS NVARCHAR(1)) T.[status]
,* FROM #TEMP T
DELETE #TEMP WHERE CAST([status_id] AS NVARCHAR(1)) ref_entity_aa CAST(ref_entity_ab AS NVARCHAR(1)) [status] NOT IN (
SELECT CAST([status_id] AS NVARCHAR(1)) ref_entity_aa CAST(ref_entity_ab AS NVARCHAR(1)) [status]
FROM(
SELECT status_id
,RANK() OVER(PARTITION BY ref_entity_aa,ref_entity_ab,[status] ORDER BY status_id DESC) [rank]
,ref_entity_aa
,ref_entity_ab
,[status]
FROM #TEMP
)A
WHERE [rank] <= 1 --'N'
)
SELECT --After Delete
CAST([status_id] AS NVARCHAR(1)) ref_entity_aa CAST(ref_entity_ab AS NVARCHAR(1)) [status]
,T.ref_entity_aa
,T.ref_entity_ab
,T.[status]
FROM #TEMP t
帶有連接鍵的輸出:(之前和之后)

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/343263.html
標籤:sql PostgreSQL
