获取最新记录

我目前仍在SQL教学中,需要一些帮助!

我的查询如下;

SELECT
Audit_Non_Conformance_Records.kf_ID_Client_Reference_Number,Audit_Non_Conformance_Records.TimeStamp_Creation,Audit_Non_Conformance_Records.Clause,Audit_Non_Conformance_Records.NC_type,Audit_Non_Conformance_Records.NC_Rect_Received,Audit_Non_Conformance_Records.Audit_Num


FROM Audit_Non_Conformance_Records 

我正在尝试对此进行调整,以仅显示基于Audit_Non_Conformance_Records.TimeStamp_Creation的最新结果

我尝试使用MAX(),但是所有这一切都显示了所有记录的最新日期。

基本上上述结果给了我这个

获取最新记录

但是我只需要带有日期02/10/2019的结果,因为这是最新的结果。但是,可能会有多个结果。因此,例如如果从未发生过02/10/2019,那么我将需要2019年10月14日的所有个人回忆录。

那有什么意义吗?

superursine 回答:获取最新记录

您可以使用子查询进行过滤:

 SELECT
    kf_ID_Client_Reference_Number,TimeStamp_Creation,Clause,NC_type,NC_Rect_Received,Audit_Num
FROM Audit_Non_Conformance_Records a
where TimeStamp_Creation = (
    select max(TimeStamp_Creation)
    from Audit_Non_Conformance_Records
)

这将为您提供TimeStamp_Creation等于表中可用较大值的所有人。

如果您希望所有记录具有最长的一天(排除时间),则可以执行以下操作:

SELECT
    kf_ID_Client_Reference_Number,Audit_Num
FROM Audit_Non_Conformance_Records a
where cast(TimeStamp_Creation as date) = (
    select cast(max(TimeStamp_Creation) as date)
    from Audit_Non_Conformance_Records
)

修改

如果您想要每个refNumber的最新记录,则可以将子查询关联起来,如下所示:

SELECT
    kf_ID_Client_Reference_Number,Audit_Num
FROM Audit_Non_Conformance_Records a
where TimeStamp_Creation = (
    select max(TimeStamp_Creation)
    from Audit_Non_Conformance_Records a1
    where a1.refNumber = a.refNumber
)

为了提高性能,您希望在(refNumber,TimeStamp_Creation)上建立索引。

,

如果要在SQL Server中获取最新日期,可以将其表示为:

SELECT TOP (1) WITH TIES ancr.kf_ID_Client_Reference_Number,ancr.TimeStamp_Creation,ancr.Clause,ancr.NC_type,ancr.NC_Rect_Received,ancr.Audit_Num
FROM Audit_Non_Conformance_Records ancr
ORDER BY CONVERT(date,ancr.TimeStamp_Creation) DESC;

SQL Server非常擅长处理转换日期,因此如果它在TimeStamp_Creation上使用索引,我不会感到惊讶。

本文链接:https://www.f2er.com/3100989.html

大家都在问