2014-09-26 2 views
0

Я развлекаюсь, пытаясь вернуть значение MAX из SQL Server:SQL MAX запросов Lookup из двух таблиц

SELECT 
    MAX(GPSdata_1.Longitude) AS Expr1, 
    MAX(GPSdata_1.Latitude) AS Expr2, 
    CAST(MAX(GPSdata_1.Speed) AS DECIMAL(9 , 0)) AS Expr3, 
    MAX(GPSdata_1.Date) AS Time, Units.FleetName 
FROM 
    GPSdata AS GPSdata_1 
INNER JOIN 
    Units ON GPSdata_1.UnitID = Units.IMEInumber 
GROUP BY 
    Units.FleetName 

Проблемы по каким-то причинам Длинные и Lat не возвращаются правильное значение

Я попытался

select * 
from mytable t1 
inner join 
    (
select max(ID) 
from mytable 
group by UnitID 
) t2 
on t1.ID = t2.ID 

в принципе у меня есть 1 стол, который имеет идентификатор в нем, и я хочу, чтобы вернуть последний/Max запись для ID.

+0

Может йо Давайте так примеры данных? Что у вас есть и чего вы ожидаете? – Arion

+0

Не думаю, что я работал над этим, работая с FROM GPSdata AS TT INNER JOIN (SELECT UnitID, MAX (Дата) AS date1 FROM GPSdata GROUP BY UnitID) AS T2 ON TT.UnitID = T2.UnitID AND TT. Date = T2.date1 INNER JOIN Units ON TT.UnitID = Units.IMEInumber GROUP BY TT.Date, TT.Longitude, TT.Latitude, Units.FriendlyName, CAST (TT.Speed ​​AS DECIMAL (9, 0)) – OneNathan

ответ

0

Я в конечном итоге получить его работу с помощью следующей команды

SELECT TT.Longitude,TT.Latitude,TT.Date,CAST(TT.Speed AS DECIMAL(9, 0)) 
    AS Expr1,Units.FriendlyName 
    FROM GPSdata AS TT 
    INNER JOIN (SELECT UnitID, MAX(Date) AS date1 
       FROM GPSdata 
       GROUP BY UnitID) AS T2 ON TT.UnitID = T2.UnitID 
            AND TT.Date = T2.date1 
    INNER JOIN Units ON TT.UnitID = Units.IMEInumber 
    GROUP BY TT.Date,TT.Longitude,TT.Latitude,Units.FriendlyName, 
    CAST(TT.Speed AS DECIMAL(9, 0)) 
+0

Что касается вашего ответа, как кто-то сможет найти решение с информацией, предоставленной в вашем вопросе? – bummi