0

我有一个包含 80,000 多行(标签提要)的表,其中我有 12 个不同的标签(TagID),所以我只想返回 12 行。

我想根据 (MAX) 日期列找到每个 tagid 的最新值。所以我真的想在 tagid 上有一个 DISTINCT 并确保我有最新日期的记录并显示 tagid、日期和位置列

4

2 回答 2

0
SELECT date, tagid, location
FROM table a
WHERE date = (
    SELECT MAX(date)
    FROM table b
    WHERE a.key1 = b.key1
      AND a.key2 = b.key2
      -- etc
)

会给你你想要的。我猜这WHERE a.tagid = b.tagid可能是您想要的 WHERE 子句,但如果有其他列使该行唯一,您可能还需要包括这些。

于 2012-05-15T12:38:51.303 回答
0

这是一种无需连接子查询中的所有键列即可产生所需结果的方法:

WITH x AS ( 
     SELECT datecol, 
         tagid, 
         location, 
         ROW_NUMBER() OVER ( PARTITION BY tagid ORDER BY datecol DESC ) AS rnum
     FROM sometable
)
SELECT datecol, tagid, location FROM x WHERE rnum = 1
;
于 2012-05-15T19:26:24.357 回答