数据:
| 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)的订单,则选择最大的ORDER号。
新的期望结果:
| 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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句