我想找到所有未完成的请求,其中所有相关的任务已经完成。在这些请求中,查找最新完成的任务的用户电子邮件。也就是说,我需要返回RequestID,TaskID,UpdatedDate,电子邮件
这是我的疑问:
select r.RequestID,r.UpdatedDate,u.Email
from Request r
left outer join Task t1 on r.RequestID = t1.RequestID
left outer join Task t2 on r.RequestID = t2.RequestID and t2.UpdatedDate > t1.UpdatedDate
left outer join Users u on t1.AssignedEmp = u.UserID
where r.RequestStatusID in (2,6) and t1.TaskStatusID in (2,5)
and t2.RequestID is null该查询为我提供了每个请求的最新完成或取消任务,但同一请求中还有其他尚未完成的任务。例如,这些记录:
RequestID = 1
TaskID = 1, TaskStatusID = 2 (completed) UpdatedDate = '20150417'
TaskID = 2, TaskStatusID = 3 (InProgress)UpdatedDate = '20150416'这一请求将被选中。但我不想要。我希望所有的TaskStatusID =完成或取消
我该怎么解决呢?谢谢!
发布于 2015-04-20 21:24:57
我终于解决了这个问题。
select r.RequestID,
t.UpdatedOn, u.FirstName + ' ' + u.LastName as UserName, u.Email
from Request r
join
(
select RequestID,AssignedEmp, TaskID, Row_Number() OVER (Partition By RequestID Order By UpdatedDate desc) AS RowNo , UpdatedDate, TaskStatusID
from Task
where RequestID not in ( select t1.RequestID
from Task t1
where t1.TaskStatusID not in (2,5)
group by t1.RequestID, t1.TaskID
)
) t
on r.RequestID = t.RequestID and t.RowNo = 1
and r.RequestStatusID in (2,6)
join Users u on t.AssignedEmp = u.UserID
order by r.RequestID deschttps://stackoverflow.com/questions/29709446
复制相似问题