DB2 group by和return id with max date

时间:2014-04-25 13:52:37

标签: group-by db2 sql-order-by aggregate-functions

我有点头疼来提问,也许有人可以帮忙。

  

我的表格字段(ID,FIELD1,FIELD2,STATUS,DATE)。

让我们假设我想按FIELD1和FIELD2分组并按max(DATE)排序。在我的回答中,我需要显示ID和STATUS字段。

这可能吗?

事先,谢谢!

1 个答案:

答案 0 :(得分:1)

我认为你想要的只是每个field1 / field2组合的“最新”版本。有几种方法可以做到这一点,但做一个相关的子选择可能是最简单的(不一定是最快的,但性能相当):

SELECT
     FIELD1
    ,FIELD2
FROM fields A
WHERE date = (
    SELECT MAX(date)
    FROM fields B
    WHERE A.field1 = b.field1
      AND A.field2 = b.field2
)

显然,field1, field2, date上的索引可以让这次运行更快一些。

我的猜测是你的一个性能问题是数据库必须创建一个内部工作文件才能在ORDER BY子句中执行WITH ...这实际上并不需要。您已经获得了每个组合的“最大”日期,然后按max_date对这些“最大”组合进行排序。然后,你正在做IN,行的顺序在那里并不重要。