尝试删除SSMS中多个列的连接中的重复项,并添加基于另一列的额外条件。基本上,试图查看输入日期、ID、课程、类型的相同CONCAT是否出现不止一次,如果出现,则删除状态=撤回的条目
输入日期 | ID | 课程类型状态 | |
---|---|---|---|
2021年1月5日 | 1234 | NS02 | FT | 退出
2021年1月5日 | 1234 | NS02 | FT | 继续
2022年9月18日 | 2345 | AC00 | PT | 继续
2021年12月20日 | 2345 | AC00 | FT | 撤回
2020年6月30日 | 4567 | >FS03 | FT | 撤回
2020年6月30日 | 4567 | >FS03 | FT | 继续
我想我可能已经对它进行了排序:'(如果我使用问题中的脚本,我会获得concat:后所有重复数据的列表
SELECT CONCAT([Date Entered],[ID],[Course],[Type]) as concatfields,
COUNT(*) AS No
INTO WIP.[Concat]
FROM [RAW].[Course_Info]
GROUP BY CONCAT([Date Entered],[ID],[Course],[Type])
HAVING COUNT(*) >1
然后回到主表,我可以在最后添加一个过滤器(在任何其他排除之后(:
[...]
EXCEPT SELECT * FROM [RAW].[Course_Info]
WHERE (([Date Entered],[ID],[Course],[Type]) IN (SELECT concatfields from WIP.[Concat]
AND [Status] like '%Withdrawn%')
这并不是最漂亮的方式,但这恰恰消除了需要的东西。同时,我之前尝试进行以下排除,在我的大样本中成功地删除了比必要的多得多的内容(我相信它排除了所有"撤回"条目(:
AND (
CONCAT([Date Entered],[ID],[Course],[Type]) NOT IN (SELECT concatfields from WIP.[Concat])
AND [Aim Completion Status] NOT LIKE '%Withdrawn%')