首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找所有子表值都满足要求的父级

查找所有子表值都满足要求的父级
EN

Stack Overflow用户
提问于 2015-04-17 21:14:10
回答 3查看 48关注 0票数 0

我想找到所有未完成的请求,其中所有相关的任务已经完成。在这些请求中,查找最新完成的任务的用户电子邮件。也就是说,我需要返回RequestID,TaskID,UpdatedDate,电子邮件

这是我的疑问:

代码语言:javascript
复制
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

该查询为我提供了每个请求的最新完成或取消任务,但同一请求中还有其他尚未完成的任务。例如,这些记录:

代码语言:javascript
复制
RequestID = 1
TaskID = 1, TaskStatusID = 2 (completed) UpdatedDate = '20150417'
TaskID = 2, TaskStatusID = 3 (InProgress)UpdatedDate = '20150416'

这一请求将被选中。但我不想要。我希望所有的TaskStatusID =完成或取消

我该怎么解决呢?谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2015-04-20 21:24:57

我终于解决了这个问题。

代码语言:javascript
复制
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 desc
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29709446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档