0

我们的医院系统有一个文件表,页面也单独列出。因此,将为每一页(第 1 页、第 2 页、第 3 页)列出每个文档/副标题/DUID(文档唯一 ID)这是一个表格示例,以及我想要完成的内容 -

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 请帮我找到重复的,这样我们就可以清理我们的记录了!

4

3 回答 3

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
于 2013-08-09T16:16:50.133 回答
1

这将起作用 -

;与 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
于 2013-08-09T16:21:08.847 回答
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
于 2013-08-09T16:18:16.920 回答