如何使用TSQL获取最新记录?

如何使用TSQL获取最新记录?,tsql,Tsql,作为上述查询的结果,我只需要表b中maxdatetime所在的记录。 结果:- aa,c1 注意:在我的实际查询中,我有许多连接和where条件。Group by在此不起作用。这是一种使用排名函数识别最大日期,然后过滤查询的方法。警告:在某些情况下,它可能不会表现得很好 WHERE b.DateTime = (SELECT MAX(DateTime) FROM b) 在我的实际查询中,我有7个以上的连接和10个where条件。。。除了WHERE条款,还有别的方法吗?谢谢这里是减少成绩的适当地方

作为上述查询的结果,我只需要表b中maxdatetime所在的记录。 结果:-

aa,c1


注意:在我的实际查询中,我有许多连接和where条件。Group by在此不起作用。

这是一种使用排名函数识别最大日期,然后过滤查询的方法。警告:在某些情况下,它可能不会表现得很好

WHERE b.DateTime = (SELECT MAX(DateTime) FROM b)

在我的实际查询中,我有7个以上的连接和10个where条件。。。除了WHERE条款,还有别的方法吗?谢谢这里是减少成绩的适当地方。您可以在ON子句中使用AND添加相同的约束,但由于您正在执行左连接,因此这不一定会减少列表,而是会留下大量不匹配的字段,其中b值将为null。在任何情况下,无论where Condition或with和in ON子句,其返回null。而且表bHmm中没有空值,一定是出了问题。b、 如果DateTime与表中不匹配的字段左连接,则DateTime将为null;它与实际表中是否存在空值无关。在ON级别添加条件肯定会得到这个结果。显然,如果您说b.DateTime=在这里选择一个日期时间,那么任何空值都不会匹配该条件。这可能与您提到的其他10个条件有关,可能是一个OR取消了许多其他约束。David。上面的where子句提供了无效的对象名称“b”错误结果中是否始终只有一行?或者我是在过度复杂化这一点,试图从?Tevo D中获得每一行的最大值。有多行…因此,请给出示例数据,aID=2的结果中是否应该有第二行?
WHERE b.DateTime = (SELECT MAX(DateTime) FROM b)
SELECT a.Name, b.Name
FROM Table a
LEFT JOIN (
  select aID, DateTime, rank() over (order by b.DateTime desc) as rownum
  from TableB
) b ON a.ID = b.aID and b.status = 1
where
b.rownum = 1 -- first row