【发布时间】:2021-08-23 07:59:39
【问题描述】:
我在 ERP 系统中有一个表,我正在尝试找到一些有效的方法来进行查询,以从相互依赖的两列中获取最大值。
例如:
| order | date | time |
|---|---|---|
| 487715 | 2021-06-08 | 13:35:52 |
| 487715 | 2021-06-12 | 08:59:28 |
| 487715 | 2021-06-12 | 10:06:13 |
| 572335 | 2021-08-06 | 10:23:15 |
| 572335 | 2021-06-01 | 06:42:40 |
我需要结果:
order | date | time
487715 | 2021-06-12 | 10:06:13
572335 | 2021-08-06 | 10:23:15
一种选择是选择日期的最大值并使用内连接重新附加表并找到最大时间值,但我不确定它的查询效率和速度如何。
select orderID,
max(pickTime) pickTime,
maxDate.pickDate
from (
select orderID,
max(pickDate) pickDate
From TestDB.dbo.stockMovements
group by orderID
) maxDate
inner join TestDB.dbo.stockMovements movements on movements.orderID = maxDate.orderID and movements.pickDate = maxDate.pickDate
group by maxDate.orderID, maxDate.pickDate
这不一定只是日期和时间,而只是数字。
【问题讨论】:
-
您使用的是哪个 dbms?
-
Microsoft SQL Server 2016
-
这能回答你的问题吗? Get top 1 row of each group
-
在这种情况下,您也可以简单地使用
MAX(date + time),但它不太可能像其他答案那样高效
标签: sql sql-server tsql