我之前遇到过CROSS APPLY的问题,它解决得很好(Using CROSS APPLY)。
这是另一部分。我希望获得一条最新的CarData行(所有列!),以便在24小时内获得新线路的所有车辆。 正如我所假设的,首先SELECT应该为所有那些在24小时内更新事件的汽车获得不同的CarIndexes,第二个SELECT给出最新的行。 无论如何我不知道在哪里正确放置DISTINCT字,现在我只使用此查询得到CarIndexes而不是CarData行的列表:
SELECT DISTINCT CD.CarIndex FROM [dvm_data].[dbo].[CarData] CD
CROSS APPLY (
SELECT TOP 1 * FROM [dvm_data].[dbo].[CarData] WHERE CarIndex = CD.CarIndex ORDER BY ID DESC) MD
WHERE CD.DatetimeOccurred > (GETDATE()-1)
那么,如何使DISTINCT和整行工作?