此子查询ERROR最多可返回一条记录

时间:2017-01-16 15:59:52

标签: sql subquery

Select  
    Query_2.[Date Assigned], Query_2.ID,
    Query_2.Aging, Query_2.[Date/Time Opened]
From    
    Query_2
Where   
    (((Query_2.[Date Assigned]) In (Select [Date Assigned]
                                    From Query_2 As Tmp
                                    Group By [Date Assigned], ID
                                    Having Count(*) > 1
                                       And ID = Query_2.ID))
    And ((Query_2.[Date/Time Opened]) = (Select Max([Date/Time Opened])
                                         From Query_2 As Tmp
                                         Group By [Date Assigned], ID
                                         Having Count(*) > 1
                                            And ID = Query_2.ID))
        )

有人可以帮助我吗?我无法弄清楚错误是什么,因为当我第一次这样做时,查询最初成功运行。

提前致谢!

增加注:

基本上,我尝试删除副本,副本应该是最新的,所有我想得到的唯一的第一个日期。我希望这很清楚。我稍后会回顾下面的答案,看看它是否有效。再次感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为您可以使用row_number()更轻松地执行您想要的操作:

select q2.*
from (select q2.*,
             row_number() over (partition by id order by [Date Assigned] desc, [Date/Time Opened] desc) as seqnum
      from Query_2 q2
     ) q2
where seqnum = 1;

这将获得每个id最近分配日期的最新开放时间记录。这似乎是您的查询尝试做的事情。