我们的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,然后更新。 –