DB2 9.5。从第一列中选​​择不同的值,但查看其他2列值

时间:2012-05-15 12:21:53

标签: db2

我有一个包含80,000多行(标记供稿)的表,其中我有12个不同的标记(TagID),因此我只想返回12行。

我想根据(MAX)日期列找到每个tagid的最新值。所以我真的想在tagid上使用DISTINCT并确保我有最新日期的记录并显示tagid,date和location列

2 个答案:

答案 0 :(得分: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子句,但是如果有其他列使该行唯一,您可能还需要包含这些。

答案 1 :(得分: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
;