[英]SQL Select Multiple Values StoredProcedure
我有兩個表:設備詳細信息:具有每個設備的詳細信息的其他表設備記錄。
我想在設備列表中做出Select語句,以從“設備詳細信息”中獲取每個設備的最高記錄:
SELECT TOP 1
[t].[DeviceNumber]
, [d].[CarNumber] AS [CarNumber]
, [t].TimeStamp
FROM [DeviceRecords] AS [t]
LEFT JOIN [Device_Details] AS [d]
ON [t].[DeviceNumber] = [d].[AVL_DeviceNumber]
WHERE [t].[DeviceNumber] IN ('013950003919546', '358244017672256', '013950003919876', '013227005026319', '013226001974274')
ORDER BY
[t].TimeStamp DESC
我不是在C#中執行For循環並僅對每個設備進行查詢,而是在思考如何一次查詢返回每個設備的TOP記錄。
可以使用APPLY
時就是這種情況:
select t.DeviceNumber,
oa.CarNumber,
t.TimeStamp
from [DeviceRecords] as t
outer apply(select top 1 CarNumber
from [Device_Details] as d
where t.DeviceNumber = d.AVL_DeviceNumber
order by ... desc) oa
where t.DeviceNumber in ('013950003919546', '358244017672256',
'013950003919876', '013227005026319', '013226001974274')
並且您應該用...
中的適當列替換...
嘗試使用子查詢
SELECT TOP 1
[t].[DeviceNumber]
, [d].[CarNumber] AS [CarNumber]
, [t].TimeStamp
FROM (Select [i].[DeviceNumber], MAX([i].[TimeStamp]) as 'TimeStamp'
from [DeviceRecords] AS [i]
group by [i].[DeviceNumber]) AS [t]
LEFT JOIN AS [d]
ON [t].[DeviceNumber] = [d].[AVL_DeviceNumber]
WHERE [t].[DeviceNumber] IN ('013950003919546', '358244017672256', '013950003919876', '013227005026319', '013226001974274')
ORDER BY
[t].TimeStamp DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.