- If an employee has both eligible and not eligible get the eligible record with min of Cal.
- If an employee has only eligible or not eligible get the record with min of Cal.
- For the above both conditions, we should get only one record for each employee.
DECLARE @Temp TABLE(EmpID VARCHAR(50), ISEligible CHAR(1), Cal INT)
INSERT INTO @Temp(EmpID, ISEligible, Cal)
SELECT '8829', 'Y', 10 UNION ALL
SELECT '8829', 'N', 3 UNION ALL
SELECT '8829', 'Y', 8 UNION ALL
SELECT '1256', 'Y', 0 UNION ALL
SELECT '1256', 'N', NULL UNION ALL
SELECT '1111', 'N', NULL UNION ALL
SELECT '1111', 'N', NULL UNION ALL
SELECT '2222', 'Y', NULL UNION ALL
SELECT '2222', 'Y', NULL
SELECT * FROM @Temp
SELECT *
FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY EmpID
ORDER BY ISEligible DESC, Cal asc) RowNum,
EmpID ,
ISEligible,
Cal
FROM @Temp
)
AS Temp
WHERE RowNum = 1
No comments:
Post a Comment