sql - SQL GroupBy 在一行中显示具有最大值的一行
问题描述
我有下表
ID Date quantity storename
id1 01-01 1 A1
id2 01-03 3 A2
id1 01-03 40 A2
我想看看
ID Date quantity storename
id1 01-03 40 A2
id2 01-03 3 A2
所以基本上我想按 ID 分组并找到最大(最新)日期。然后从该最大(最新)日期获取整个行数据。
我尝试了以下代码,但没有成功。
SELECT ID, max(Date), quantity, storename FROM table
GROUPBY ID
此外,是否可以获取所有列(如使用 *)而不是一一指定?
解决方案
您可以使用聚合:
select t.*
from t
where t.date = (select max(t2.date) from t t2);
请确保日期没有时间部分。如果是这样:
select t.*
from t
where trunc(t.date) = (select trunc(max(t2.date)) from t t2);
推荐阅读
- python - 如何使用python删除圆括号之间的所有内容
- java - 在 Android 中使用“日历”指定日期时间范围
- google-chrome - 从注入的按钮打开页面时出现“被阻止”错误
- wso2 - WSO2 API Manager 配置更改主机名
- docker - elm make 在高山 docker 容器中失败
- azure - listview imagecell - 图像在 ios 中加载,而不是在 Azure 中的 android 中
- c# - 修复 C# dotnetcore3.1 log4net 2.0.8:检测到包降级错误
- node.js - 停止服务器后连接 socket.io 增加
- microsoft-graph-api - 将文件添加或上传到 Microsoft Teams 文件选项卡中的文件选项卡
- .net - SignalR 集线器连接 StateChanged 不工作客户端