我有一个包含 80,000 多行(标签提要)的表,其中我有 12 个不同的标签(TagID),所以我只想返回 12 行。
我想根据 (MAX) 日期列找到每个 tagid 的最新值。所以我真的想在 tagid 上有一个 DISTINCT 并确保我有最新日期的记录并显示 tagid、日期和位置列
我有一个包含 80,000 多行(标签提要)的表,其中我有 12 个不同的标签(TagID),所以我只想返回 12 行。
我想根据 (MAX) 日期列找到每个 tagid 的最新值。所以我真的想在 tagid 上有一个 DISTINCT 并确保我有最新日期的记录并显示 tagid、日期和位置列
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 子句,但如果有其他列使该行唯一,您可能还需要包括这些。
这是一种无需连接子查询中的所有键列即可产生所需结果的方法:
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
;