SQL按日期过滤后获取最新日期

时间:2015-11-19 01:00:12

标签: sql-server date

我有两个表需要在我的SQL中考虑日期。

  • 表(t1)具有记录对实体的任何更改的日期(类似于修改日期)。
  • 表(t2)的日期记录了创建t2中的记录的时间。

我需要确定创建t2记录时t1中数据的状态。所以我理解修改日期必须在创建记录之前。我已经做过了。但它必须是在创建t2中的记录之前进行的最后一次修改。

我如何做到这一点?我在这里创造了一个小提琴:

SQL Fiddle

更新:我能够得到90%可行的答案。我现在唯一的问题是如果日期中存在完全匹配

Updated Fiddle

对于查尔斯泽维尔记录,数据回复为' at'它应该在哪里' t1'

1 个答案:

答案 0 :(得分:0)

好的,所发生的小错误是外部申请应按日期排序,如果它需要最新的

SELECT t1.StaffName, t1.DateAppointed, t2.DateSet, t2.PName
FROM Staff t1
OUTER APPLY (
  SELECT TOP 1 m.DateSet, m.PName
  FROM MPHist m
  WHERE t1.DateAppointed >= m.DateSet AND m.PvpId = t1.PvpId
  ORDER BY m.DateSet
) t2

需要发布SQL,因为SQLFiddle在尝试更新小提琴或甚至创建新的小提琴时都会出现问题