Select

選擇每個都有最大值的唯一欄位?

  • October 17, 2015

我有一張包含數據名稱、數字和時間戳的表格。我想知道如何根據時間戳的最新程度選擇每個名稱的唯一實例。

Addy(文本)、NW(數字)、UDate(時間戳)、Stance(文本)。

我只想拉出 Addy 的一個實例,並且我希望拉出的那個擁有最新的 UDate 值。我想把它做成一個單獨的表格,這樣我就有了歷史資訊的原始表格和一個更有用的表格,其中包含最新的英特爾。

我正在使用 Microsoft Access 2013。

這種類型的查詢有時被稱為“每組最大 n 個”(在 StackOverflow 和 DBA.SE 中甚至有一個標籤)。在這個問題中,您希望每組一行。

一種常見的解決方案是使用視窗函式(但這些在 Access 中不可用),另一種是GROUP BY在派生表中使用,然後連接回原始表。像這樣:

SELECT t.*
FROM 
   TableName AS t
 INNER JOIN
   ( SELECT Addy, MAX(UDate) AS UDate
     FROM TableName
     GROUP BY Addy
   ) AS grp
 ON  grp.Addy = t.Addy
 AND grp.UDate = t.UDate ;

引用自:https://dba.stackexchange.com/questions/118211