SQL新手需要帮助查找特定的重复项

时间:2016-12-18 03:57:56

标签: sql-server tsql

首先让我说这不是干净的数据,不是由我创建的,它是从我的工作使用的另一个程序收集的信息。基本上我开始使用html文件,并创建了一个csv将其导入sql server。我有3列JobNumber ArchiveMedium和ArchiveCreationDate。

示例

JobNumber     ArchiveMedium
81609         0004026
81609         \\Datablock1\datablockstore1\

当我使用计数(*)时,我有大约6000多个重复记录显示。有没有办法让我编写一个选择查询,只显示符合上述示例中标准的重复记录。

大多数重复项是一个具有相应数字的工作号,即低于......

JobNumber    ArchiveMedium 
81608        000396I 
81608        000396K
81608        000396H

我只关心具有ArchiveMedium编号的重复JobNumber以及\ Datablock .....

这有意义吗?任何帮助或建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

这样做你想要的吗?

select jobNumber
from t
group by jobNumber
having sum(case when ArchiveMedium like '\\Datablock%` then 1 else 0 end) > 0 and
       count(*) > 1;

这应该返回至少有一个" datablock"记录。如果需要,您可以加入原始表以获取详细行。

答案 1 :(得分:0)

阅读完你的评论后,我认为这就是你要找的东西

SELECT JobNumber , SUM(Col1) , SUM(Col2) 

FROM (
SELECT JobNumber , case when ArchiveMedium like '\\Datablock%' then 1 else 0 end AS Col1 , case when ArchiveMedium not like '\\Datablock%' then 1 else 0 end AS Col2
from Table_2) AS T1
GROUP BY JobNumber
HAVING SUM(Col1) > 0 AND SUM(Col2)  > 0