我试图从数据库中的三个表中创建一个视图。
我只想显示我最近的文件时间。如你所见,我有一辆车,它根据文件时间显示两个不同的值(我用一个红色正方形标记了该区域)。
我只想显示最新的文件时间。我该怎么做?我试过使用“组”和“最大值”,但没用。这是我当前的代码:
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是文件名,它包含读取时的milage和filetime。
最佳答案
试试这个:
SELECT ReadOutID,
Identifier,
ECU,
FileTime,
FileName,
Name,
[Value]
FROM (
SELECT dr.ReadOutID,
dv.Identifier,
dv.ECU,
dr.FileTime,
dr.FileName,
dve.Name,
dv.[Value],
DENSE_RANK() OVER (PARTITION BY dve.Name ORDER BY dr.FileTime DESC) as drnk
FROM db_ddladmin.Data_Readouts dr
INNER JOIN db_ddladmin.Data_Values dv
ON dr.ReadOutID = dv.ReadOutID
INNER JOIN db_ddladmin.Data_Vehicles dve
ON dr.VehicleID = dve.ID
) as rv
WHERE drnk = 1;
关于sql - 在MS SQL Server的VIEW中整理出最新的Filedate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37274005/