我在 SQL Server 中有一个类似于此的表:
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 放在一起。