首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择所有列,但也按不同的列和最老日期选择。

选择所有列,但也按不同的列和最老日期选择。
EN

Stack Overflow用户
提问于 2022-08-29 15:57:43
回答 1查看 58关注 0票数 2

我需要选择由number区分的行,这些行是最古老的date

我看到这篇文章:SQL选择Distinct列和最新日期

但在我的情况下,它不起作用,因为我需要选择所有的列,而不仅仅是子句中使用的2。

所以我得到了这个错误:

它既不包含在聚合函数中,也不包含在分组中。

是否有选择所有列的方法,如果存在具有相同date的行,请将旧行考虑为id较低的行。

样本数据:

代码语言:javascript
运行
复制
id      name       number         date
1       foo         1111       06-11-2022
2       bar         2222       01-12-2022
3       baz         3333       12-30-2022
4      foobar       1111       02-01-2022

这是我尝试过的查询:

代码语言:javascript
运行
复制
SELECT id, name, number, MIN(date) as date
FROM my_table
GROUP BY number

使用Microsoft

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-29 16:11:08

使用GROUP BY聚合函数时,只能使用SELECT列表中的聚合列。您可以通过几种方式实现预期的输出,下面是使用窗口聚合函数的一种方法:

代码语言:javascript
运行
复制
select T.*
from (select *,
             row_number() over (partition by number order by [date], id) as sn
      from my_table
     ) T
where sn = 1;

SQL在这里

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

https://stackoverflow.com/questions/73531475

复制
相关文章

相似问题

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