我们的医院系统有一个文件表,页面也单独列出。因此,每个文档/副标题/ DUID(文档唯一ID)将列在每个页面(第1页,第2页,第3页)。这是一个表的示例以及我正在尝试完成的任务 -
ID Global_ID document subtitle page DUID
-------------- -------------------- ----------------------- ------------------------------ ------ -------------
1 11111 IMAGING REPORT 20120723 6400 CR 1 1.2.840.....
2 22222222 RADIOLOGY 20110808 70012240000200 CH2V 1 1.2.840.111.
2 22222222 RADIOLOGY 20110808 70012240000200 CH2V 1 1.2.840.222.
3 333333 IMAGING REPORT 20120607 29006850002500 CH2V3 1 1.2.840.....
4 44444444 RADIOLOGY 20110816 70012240000300 CH1V 1 1.2.840.....
5 55555555 RADIOLOGY 20110817 70012240000400 CH1V 1 1.2.840.....
我试图找到“重复”,例如示例中的ID#2 ...其中ID具有相同文档/字幕组合的两个副本(每个具有它们自己唯一的DUID)。请记住,我将上述结果限制为“第1页”......但这很好,因为这会缩短整体结果集。另外,请记住,两个不同ID的字幕可以匹配,所以我不能做一个简单的COUNT(subtitle) > 1
请帮我找到重复的内容,以便我们清理记录!
答案 0 :(得分:1)
假设SQL Server 2005 +:
;WITH CTE AS
(
SELECT *,
N=COUNT(*) OVER(PARTITION BY ID, Global_ID, document, subtitle)
FROM YourTable
)
SELECT *
FROM CTE
WHERE N > 1
答案 1 :(得分:1)
这将有效 -
;WITH cte AS( SELECT ID, Global_ID,DOCUMENT,subtitle, page, DUID, ROW_NUMBER() OVER (PARTITION BY ID, Global_ID,DOCUMENT,subtitle, page, DUID ORDER BY ID, Global_ID,DOCUMENT,subtitle, page, DUID DESC) AS row_cnt FROM table ) SELECT * FROM cte WHERE row_cnt > 1
答案 2 :(得分:0)
你可以试试这样的......
SELECT A.ID,A.DUID,B.ID,B.DUID
FROM <TABLE> A Join <TABLE> B
ON A.ID=B.ID
and A.Global_ID=B.Global_ID
and A.document=B.document
and A.subtitle=B.subtitle
and A.page=B.page
WHERE A.DUID<>B.DUID