微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果您的结果返回两个不同的时间,则使用 SQL 获取最新输入时间,我应该使用交叉还是外部应用?

如何解决如果您的结果返回两个不同的时间,则使用 SQL 获取最新输入时间,我应该使用交叉还是外部应用?

所以我想将 datediff 用于我要连接的两个表。问题是如果我按唯一值过滤,它会返回两行结果。例如:

select *
from [internalaudit]..Reprocesstracker with (nolock)
where packageID = '1983446'

它返回两行,因为它被两个不同的工作人员重新打包了两次。

User               RepackageTime

KimVilder          2021-06-10
DanielaS           2021-06-05

我想使用该唯一 packageID 的最新重新打包时间,然后在我与不同的表进行连接时对另一个时间记录进行 datediff。

有没有办法进行文件管理,以便我可以获取 Repackagetime 的最新时间条目?

解决方法

select * 
from Othertable t1
join (
select *
from [internalaudit]..ReprocessTracker t2
where packageID = '1983446'
limit 1
) t2
on t1.id = t2.id 

如果您使用的是 sql server 而不是限制 1,则应使用前 1 否则你有充分的理由使用 nolock 提示,避免使用它。

还要概括上面的查询:

select * 
from Othertable t1
cross join (
select *
from [internalaudit]..ReprocessTracker t2
where t1.packageID = t2.packageID
limit 1
) t2
,

如果我了解您的目标,您可以通过多种方式实现此目的 - 正确的示例数据和表格将在这里有所帮助。

一种方法是使用 apply 并为每个 packageId 选择 max 日期

select DateDiff(datepart,t.datecolumn,r.RepackageTime)...
from othertable t
cross apply (
    select Max(RepackageTime)RepackageTime
    from internalaudit.dbo.ReprocessTracker r
    where r.packageId=t.packageId
)r

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。