1

中的重复Table 1项标识如下;

select quote_ref, count (*) 
from table 1 
group by quote_ref 
having count(*) > 1 

现在我想根据下面的 2 条规则消除重复项。

Status= Complete 取If none in complete 状态的条目,然后取带有max([created_date ]) Else Flag 的条目查看?

假设我需要一个CASE带有删除的语句,但不确定如何构造?

4

1 回答 1

4

对于 SQL Server 2005+,您可以执行以下操作:

;WITH CTE AS
(
    SELECT  *, 
            ROW_NUMBER() 
            OVER(PARTITION BY quote_ref 
                 ORDER BY CASE WHEN [Status]='COMPLETE' THEN 1 ELSE 2 END, 
                 created_date DESC) RowNum
    FROM table1
)
DELETE FROM CTE
WHERE RowNum != 1

在这种情况下,我假设您不想删除的行是具有最大值的行status = 'COMPLETE'或具有最大值的行created_date。如果是相反的方式,您可以简单地更改WHERE条件。

于 2012-05-30T18:59:29.670 回答