我們的SOP應用程序變得瘋狂了,現在我們的文檔管理系統中有成千上萬的重複文檔。如何更新SQL Server中的重複行,但保留原始?
SELECT
[INVOICE_NO], COUNT(*)
FROM
[dwdata].[dbo].[INVOICES]
GROUP BY
[INVOICE_NO]
HAVING
COUNT(*) > 1
產生數千行。每張發票只能存儲一次。
INVOICE_NO | COUNT(*)
2338508 | 2
2398800 | 3
2273807 | 2
2280570 | 4
每一行都有一個DWSTOREDATETIME
。例如:
SELECT
[INVOICE_NO], [WORKSORDER], [DWSTOREDATETIME]
FROM
[dwdata].[dbo].[INVOICES]
WHERE
[INVOICE_NO] = 2338508
2338508 | 1571105 | 2015-11-16 13:52:41.910
2338508 | 1571105 | 2015-10-27 07:50:59.970
我想要做的就是更新WORKSORDER
上重複的行只(留下的最古老的),以彌補一些諸如999999
,我知道不存在。然後,我可以使用文檔管理系統刪除工作流程模塊根據此刪除。
'SET WORKSORDER = ROW_NUMBER()(PARTITION BY INVOICE_NO ORDER BY DWSTOREDATETIME)'只是把氡子查詢/ CTE,然後更新。 –