【问题标题】:SQL Server 2012, Selecting two max records then joiningSQL Server 2012,选择两个最大记录然后加入
【发布时间】:2017-10-09 16:36:25
【问题描述】:

我正在尝试执行使用公共 ScheduledObjectID 字段的多表连接。我想根据最大 RunID 和 UserDueDate 从表中选择多条记录。任何帮助将不胜感激。

样本数据:

ScheduledObjectID RunID   UserDueDate
-------------------------------------------------
123               1       2017-07-16 14:26:56.263
123               2       2017-05-16 14:26:56.250
123               3       2017-05-16 14:26:56.233
456               9       2017-05-16 14:26:56.217
456               10      2017-05-16 14:26:56.200
456               11      2017-10-07 10:19:33.873

所需的连接数据

ScheduledObjectID RunID   UserDueDate
-------------------------------------------------
123               3       2017-05-16 14:26:56.233
456               11      2017-10-07 10:19:33.873

【问题讨论】:

  • 添加创建上述示例数据的当前查询。

标签: sql sql-server max left-join


【解决方案1】:

不需要join,可以用top 1和tie

demo here

select top 1 with ties ScheduledObjectID, RunID,   UserDueDate
from
#tmp 
order by 
row_number() over (Partition by ScheduledObjectID order by runid desc)

根据 cmets 这应该可以:

select * from t1 join
(select ScheduledObjectID,max(runid) as runid,max(userduedate) as userduedate
from t2

按 ScheduledObjectID 分组 ) t2 关于 t1.somecol1=t2.somecol

【讨论】:

  • 对不起,应该解释得更好。上面的数据是通过 ScheduledObjectID 列链接到其他数据的连接表之一。
  • 请检查编辑,如果那是你要找的
猜你喜欢
  • 1970-01-01
  • 2016-01-04
  • 2016-09-04
  • 2019-01-30
  • 2012-05-07
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多