我在ERP系统中有一个表,我正试图找到一些有效的方法来进行查询,以从相互依赖的两列中获得最大值。
例如:
<表类>为 日期时间 tbody><<tr>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 表类>
为每个订单排序,然后只选择排名最高的行。
select * from
(
select "order", "date", "time",
row_number() over (partition by "order" order by "date" desc, "time" desc) r
from TestDB.dbo.stockMovements
) t
where r = 1;
,db<的在小提琴
您可以使用row_number
为每一行分配优先级,然后选择优先级最高的行。
with t as (
select *, Row_Number() over (partition by [order] order by [date] desc, [time] desc) rn
from Tablename
)
select [order], [date], [time]
from t
where rn=1;
您的示例可能是人为的,但是如果这些是您的实际的列名,您应该重新考虑并选择更有意义的列名,而不是与保留关键字相同—这样做是一个有良好文档的反模式,并且强制使用不必要的大括号[]