簡體   English   中英

SQL選擇多個值StoredProcedure

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM