gpt4 book ai didi

sql - 在 ms sql server 的 VIEW 中整理最新的文件日期

转载 作者:搜寻专家 更新时间:2023-10-30 22:09:06 24 4
gpt4 key购买 nike

我正在尝试从我的数据库中的三个表中创建一个 View 。 How it looks

我试图只显示我拥有的最新文件时间。如您所见,我有一辆根据文件时间显示两个不同值的车辆(我用红色方 block 标记了该区域)。

我只想显示最新的文件时间。我怎么做?我已经尝试使用 group on 和 max.但它不起作用。这是我当前的代码:

SELECT TOP (100) PERCENT MAX(db_ddladmin.Data_Readouts.ReadOutID) AS ReadOutID,
db_ddladmin.Data_Values.Identifier, db_ddladmin.Data_Values.ECU,
MAX(db_ddladmin.Data_Readouts.FileTime) AS FILETIME,
MAX(db_ddladmin.Data_Readouts.FileName) AS FN,
db_ddladmin.Data_Vehicles.Name, db_ddladmin.Data_Values.Value
FROM db_ddladmin.Data_Readouts
INNER JOIN db_ddladmin.Data_Values
ON db_ddladmin.Data_Readouts.ReadOutID = db_ddladmin.Data_Values.ReadOutID
INNER JOIN db_ddladmin.Data_Vehicles
ON db_ddladmin.Data_Readouts.VehicleID = db_ddladmin.Data_Vehicles.ID
GROUP BY db_ddladmin.Data_Values.Identifier, db_ddladmin.Data_Values.ECU,
db_ddladmin.Data_Vehicles.Name, db_ddladmin.Data_Values.Value
ORDER BY MAX(db_ddladmin.Data_Vehicles.Name)

编辑:这些值来自车辆的读数。为什么我需要最新的文件时间是因为我想要最新的读数。 ReadOutID 是在进行读数时给出的数字。数字越大,读数越晚。 FN 是文件名,它包含读取时的里程数和文件时间。

最佳答案

如果我没理解错的话,你不需要聚合。只需使用 ROW_NUMBER() 并为每辆车选择最新的:

SELECT *
FROM (SELECT r.ReadOutID, v.Identifier, v.ECU, r.FileTime, r.FileName, ve.Name, v.Value
ROW_NUMBER() OVER (PARTITION BY ve.id ORDER BY r.FileTime DESC) as seqnum
FROM db_ddladmin.Data_Readouts r INNER JOIN
db_ddladmin.Data_Values v
ON r.ReadOutID = v.ReadOutID INNER JOIN
db_ddladmin.Data_Vehicles ve
ON r.VehicleID = ve.ID
) rv
WHERE seqnum = 1;

另外,请注意表别名使查询更易于编写和阅读。

关于sql - 在 ms sql server 的 VIEW 中整理最新的文件日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37274005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com