SQLServerに次のようなテーブルがあります。
Emp# CourseID DateComplete Status
1 Course1 21/05/2012 Failed
1 Course1 22/05/2012 Passed
2 Course2 22/05/2012 Passed
3 Course3 22/05/2012 Passed
4 Course1 31/01/2012 Failed
4 Course1 28/02/2012 Passed
4 Course2 28/02/2012 Passed
各emp#の各コースの最新レコードをキャプチャしようとしています。また、同じ日に同じコースが試行された場合は、「合格」のコースレコードをキャプチャします。
これらの線に沿って何かを考える:
SELECT DISTINCT .....
INTO Dup_Table
FROM MainTable
GROUP BY ........
HAVING COUNT(*) > 1
DELETE MainTable
WHERE Emp# IN (SELECT Emp# FROM Dup_Table)
INSERT MainTable SELECT * FROM Dup_Table
Drop Table Dup_Table
GO
しかし、これが
- 最善のアプローチと
- Emp#/ courseID / DateComplete/Statusをすべてまとめる方法。