2015-08-27 32 views
-1

所以我有這個樣表從表中刪除行與特定的不同值

+----+------------------+-------+------------+------------+--------+ 
| 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」和'鏈表本身的價值,我需要刪除其中StartDate和EndDate被複制(刪除兩行)。

所以在這種情況下,我需要刪除ID爲1和3的行,因爲它們在StartDate和EndDate字段中具有相同的KeyAccountNumber和具有相同日期的相同GList值,即使Rate字段不同。

因此,輸出應該是這樣的:

+----+------------------+-------+------------+------------+--------+ 
| ID | KeyAccountNumber | GList | StartDate | EndDate | Rate | 
+----+------------------+-------+------------+------------+--------+ 
| 2 |    101 | ABECD | 02-01-2015 | 02-28-2015 | 105.00 | 
+----+------------------+-------+------------+------------+--------+ 

什麼是實現這一目標的最佳方式是什麼?

謝謝!

+0

這個答案可以適應您的需求:http://stackoverflow.com/a/6353499/1507566 –

回答

4
DELETE t 
FROM YourTable t 
Group By KeyAccountNumber,GList,StartDate,EndDate 
HAVING COUNT(*) > 1 
+0

這工作,謝謝! –