sql - Oracle SQL 查询在最大日期获取值
问题描述
数据:
| ORIGL_ORDER | ORDER | ITEM | DATE | WHSE | QTY |
| ----------- | ----- | ---- | ---------- | ---- | --- |
| 001 | 107 | 9 | 12/29/2020 | 7 | 6 |
| 001 | 110 | 9 | 12/30/2020 | 1 | 4 |
| 001 | 113 | 9 | 12/30/2020 | 3 | 2 |
| 007 | 211 | 3 | 12/20/2020 | 6 | 1 |
| 007 | 219 | 3 | 12/19/2020 | 5 | 3 |
| 018 | 390 | 8 | 12/25/2020 | 2 | 1 |
原始期望结果:
| ORIGL_ORDER | ORDER | ITEM | MAX_DATE | WHSE |
| ----------- | ----- | ---- | ---------- | ---- |
| 001 | 113 | 9 | 12/30/2020 | 3 |
| 007 | 211 | 3 | 12/20/2020 | 6 |
| 018 | 390 | 8 | 12/25/2020 | 2 |
原始问题:对于每个 ORIGL_ORDER 和 ITEM,我想获取 max(DATE) 和与 max(Date) 对应的 WHSE。如果有多个订单具有相同的 max(DATE),则选择最大的订单号。
新的期望结果:
| ORIGL_ORDER | ORDER | ITEM | MAX_DATE | WHSE | TOTAL_QTY |
| ----------- | ----- | ---- | ---------- | ---- | --------- |
| 001 | 113 | 9 | 12/30/2020 | 3 | 12 |
| 007 | 211 | 3 | 12/20/2020 | 6 | 4 |
| 018 | 390 | 8 | 12/25/2020 | 2 | 1 |
解决方案
这回答了问题的原始版本。
只需使用row_number()
:
select t.*
from (select t.*,
row_number() over (partition by ORIGL_ORDER, item order by date desc, order_number desc) as seqnum
from t
) t
where seqnum = 1;
推荐阅读
- php - Laravel - 视图 - 路由器()不起作用或者我只是愚蠢
- sql-server - Azure SQL 数据库定价
- swift - 无法将类型“[Int]”的值转换为预期的参数类型“Int”
- razor - Url.Action() 上的参数具有空属性
- angular5 - 如何将对象数据循环到表中?
- python-3.x - 安装和使用 PIL-Python Imaging Library 的过程是什么?
- javascript - 发布的js文件损坏的可能原因
- javascript - 如何将pdf转换为画布并将画布转换为图像?
- python - 在python中填充上述行的最小值的最佳算法
- excel - Excel VBA中的自动索引匹配输出