Here's what I came up with:
SELECT
p.EmpId,
p.ModuleID,
StartDate =
CASE
WHEN p.ModuleID = 5 AND t.StartDate IS NOT NULL THEN t.StartDate
ELSE p.StartDate
END,
CompleteDate =
CASE
WHEN p.ModuleID = 5 AND t.CompleteDate IS NOT NULL THEN t.CompleteDate
ELSE p.CompleteDate
END
FROM t_ParticipantStatus p
LEFT OUTER JOIN
(
SELECT EmpID, StartDate, CompleteDate
FROM t_ParticipantStatus
WHERE ModuleID = '1' AND CompleteDate > '10/1/05'
) t
ON p.EmpId = t.EmpId
And here's my test:
CREATE TABLE t_ParticipantStatus
(
EmpID int,
ModuleID char(1),
StartDate datetime,
CompleteDate datetime
)
INSERT INTO t_ParticipantStatus VALUES(66, '1', '10/1/05', '10/10/05')
INSERT INTO t_ParticipantStatus VALUES(77, '1', '10/6/05', '10/8/05')
INSERT INTO t_ParticipantStatus VALUES(99, '1', '9/1/05', '9/3/05')
INSERT INTO t_ParticipantStatus (EmpId, ModuleID) VALUES(66, '5')
INSERT INTO t_ParticipantStatus (EmpId, ModuleID) VALUES(99, '7')
SELECT *
FROM t_ParticipantStatus
SELECT
p.EmpId,
p.ModuleID,
StartDate =
CASE
WHEN p.ModuleID = 5 AND t.StartDate IS NOT NULL THEN t.StartDate
ELSE p.StartDate
END,
CompleteDate =
CASE
WHEN p.ModuleID = 5 AND t.CompleteDate IS NOT NULL THEN t.CompleteDate
ELSE p.CompleteDate
END
FROM t_ParticipantStatus p
LEFT OUTER JOIN
(
SELECT EmpID, StartDate, CompleteDate
FROM t_ParticipantStatus
WHERE ModuleID = '1' AND CompleteDate > '10/1/05'
) t
ON p.EmpId = t.EmpId
DROP TABLE t_ParticipantStatus
Tara Kizer
aka tduggan