首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取最大日期的记录

获取最大日期的记录
EN

Stack Overflow用户
提问于 2012-01-18 00:19:08
回答 7查看 195K关注 0票数 32

假设我提取了一组数据。

SELECT A, date
FROM table

我只想要具有最大日期的记录(对于每个A值)。我可以写

SELECT A, col_date
  FROM TABLENAME t_ext
 WHERE col_date = (SELECT MAX (col_date)
                     FROM TABLENAME t_in
                    WHERE t_in.A = t_ext.A)

但是我的查询真的很长...有没有一种更简洁的方法使用解析函数来做同样的事情?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-01-18 00:26:40

解析函数方法看起来像这样

SELECT a, some_date_column
  FROM (SELECT a,
               some_date_column,
               rank() over (partition by a order by some_date_column desc) rnk
          FROM tablename)
 WHERE rnk = 1

请注意,根据您希望如何处理关联(或者在数据模型中是否可以关联),您可能希望使用ROW_NUMBERDENSE_RANK分析函数而不是RANK

票数 65
EN

Stack Overflow用户

发布于 2012-01-18 00:24:05

如果datecol_date是同一列,则只需执行以下操作:

SELECT A, MAX(date) FROM t GROUP BY A

为什么不使用:

WITH x AS ( SELECT A, MAX(col_date) m FROM TABLENAME GROUP BY A )
SELECT t.A, t.date FROM TABLENAME t JOIN x ON x.A = t.A AND x.m = t.col_date

否则:

SELECT A, FIRST_VALUE(date) KEEP(dense_rank FIRST ORDER BY col_date DESC)
  FROM TABLENAME
 GROUP BY A
票数 20
EN

Stack Overflow用户

发布于 2012-01-18 00:37:37

您还可以使用:

SELECT t.*
  FROM 
        TABLENAME t
    JOIN
        ( SELECT A, MAX(col_date) AS col_date
          FROM TABLENAME
          GROUP BY A
        ) m
      ON  m.A = t.A
      AND m.col_date = t.col_date
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8898020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档