首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Group-by语句不起作用

Group-by语句不起作用
EN

Stack Overflow用户
提问于 2014-04-17 03:46:35
回答 3查看 97关注 0票数 0

因此,目前我有以下表格:

代码语言:javascript
复制
ID, Name, Code, Date
1   AB    x1     01/03/2014
1   AB    x2     01/04/2014
1   AB    x3     01/05/2014
2   BC    x3     01/05/2014
2   BC    x5     01/06/2014
3   CD    x1     01/06/2014

我想要以下输出:

代码语言:javascript
复制
ID, Name, Code, Date
1   AB    x3     01/05/2014
2   BC    x5     01/06/2014
3   CD    x1     01/06/2014

所以基本上,我只想要最新的日期,而不关心代码。

在我的代码中,我有

代码语言:javascript
复制
select id, name, code, max(date)
group by id, name, code

但是group by不起作用,因为它还会考虑代码,因此我不能只得到最新的日期。此外,我不能将代码留在group by语句中,因为它会给我一个错误。

如何在不包含代码的情况下使用group by?我使用PL/SQL developer作为IDE。

EN

回答 3

Stack Overflow用户

发布于 2014-04-17 04:21:21

代码语言:javascript
复制
select id, name, code, date
from (
  select id, name, code, 
         date,
         max(date) over (partition by id) as max_date
  from the_table
) 
where date = max_date;

如果您想在有多个“最大日期”的情况下只选择其中一个日期,则可以改用row_number()

代码语言:javascript
复制
select id, name, code, date
from (
  select id, name, code, 
         date,
         row_number() over (partition by id order by date desc) as rn
  from the_table
) 
where rn = 1;

顺便说一下:对于一个列来说,date是一个可怕的名字。一方面是因为它也是一种数据类型的名称,但更重要的是因为它根本没有记录列包含的内容。“结束日期”?“开始日期”?“预产期”?...

票数 3
EN

Stack Overflow用户

发布于 2014-04-17 04:27:30

你想要的是最新的更新记录,对吗?

代码语言:javascript
复制
select t1.* 
from table t1 
inner join (select id, name, max(date) as latest_date
            from table
            group by id, name) t2 on t1.date = t2.latest_date 
            and t1.id = t2.id and t1.name = t2.name

在日期列上建立索引是很好的

票数 1
EN

Stack Overflow用户

发布于 2014-04-17 04:07:17

我假设您想要获取具有最大日期的行上的任何代码。如果你真的不关心返回什么代码,只需要在它上面使用一个聚合函数,比如max( code )。

否则,您可以执行以下操作:

代码语言:javascript
复制
SELECT t1.id, t1.name, t2.code, t2.date
FROM MyTable t1
CROSS JOIN (
  SELECT TOP 1 code, date
  FROM MyTable t3
  WHERE t3.id=t1.id
  AND t3.name=t1.name
  ORDER BY t3.date DESC
) t2

我不确定CROSS JOIN是否与PL/SQL兼容,但我相信您可以找到相同的东西。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23118795

复制
相关文章

相似问题

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