所以我有这个样本表
+----+------------------+-------+------------+------------+--------+
| ID | KeyAccountNumber | GList | StartDate | EndDate | Rate |
+----+------------------+-------+------------+------------+--------+
| 1 | 100 | ABCD | 01-01-2015 | 01-30-2015 | 100.00 |
| 2 | 101 | ABECD | 02-01-2015 | 02-28-2015 | 105.00 |
| 3 | 100 | ABCD | 01-01-2015 | 01-30-2015 | 107.00 |
+----+------------------+-------+------------+------------+--------+
我需要完成的是针对给定的不同的KeyAccountNumber'和' GList'值,我需要删除重复StartDate和EndDate的位置(删除两行)。
所以在这种情况下,我需要删除带有ID 1和3的行,因为它们具有相同的KeyAccountNumber和相同的GList值以及StartDate和EndDate字段中相同的日期,甚至认为Rate字段不同。
因此,输出应如下所示:
+----+------------------+-------+------------+------------+--------+
| ID | KeyAccountNumber | GList | StartDate | EndDate | Rate |
+----+------------------+-------+------------+------------+--------+
| 2 | 101 | ABECD | 02-01-2015 | 02-28-2015 | 105.00 |
+----+------------------+-------+------------+------------+--------+
实现这一目标的最佳方法是什么?
谢谢!
答案 0 :(得分:4)
DELETE t
FROM YourTable t
Group By KeyAccountNumber,GList,StartDate,EndDate
HAVING COUNT(*) > 1