如何根据不同条件的 T-SQL 列出重复项

How to list duplicates based on different criteria's T-SQL

我正在寻找可以帮助我完成一项非常具体的任务的人。

我正在分析来自计算机硬盘驱动器的数据,需要能够列出从 .zip 文件中提取后重复的文件夹。这是我正在使用的数据示例:

ItemName Extension ItemType
MyZipFolder.zip .zip File
MyZipFolder null Folder
PersonalDocuments.zip .zip File
PersonalDocuments null Folder

如您所见,扩展名“.zip”包含在 'ItemName' 和 'Extension' 列中。当从 .zip 文件中提取时,它变成一个文件夹。我需要一种列出 .zip 文件或它在提取后成为的文件夹的方法(两者都可以,只需要在知道它是重复的情况下列出即可)。

需要注意的是,我的数据包含大量其他具有不同扩展名的文件夹和文件,例如'.docx', '.msg' 所以查询需要打折这些。

我希望这是有道理的 - 谢谢!

预期输出可能如下所示:

ItemName Extension ItemType
MyZipFolder null Folder
PersonalDocuments null Folder

所以我知道的所有文件夹的列表在数据中都有一个 .zip 等价物。

还不确定,但你的意思是这样的吗?

select *
from your_table y
where ItemType = 'Folder'
  and exists (
    select 1 from your_table yy
    where yy.Extension = '.zip'
      and yy.ItemName = y.ItemName + '.zip'
  )

我想我得到了你需要的东西:

select ItemName 
from tablename
group by replace(ItemName, isnull(Extension,''))
having case count(case when Extension = '.zip' then 1 end) > 1