【发布时间】:2021-04-15 22:52:21
【问题描述】:
我在 DB2 数据库中有一个包含事务数据的表,我想检索每个位置和产品的最后一条记录。不幸的是,日期存储为 YYYYMMDD 字符串。没有我可以键入的交易 ID 或类似字段。没有主键。
| DATE | LOCATION | PRODUCT | QTY |
|---|---|---|---|
| 20210105 | A | P1 | 4 |
| 20210106 | A | P1 | 3 |
| 20210112 | A | P1 | 7 |
| 20210104 | B | P1 | 3 |
| 20210105 | B | P1 | 1 |
| 20210103 | A | P2 | 6 |
| 20210105 | A | P2 | 5 |
我想检索显示每个位置、每个产品的最后一笔交易的结果,所以结果应该是:
| DATE | LOCATION | PRODUCT | QTY |
|---|---|---|---|
| 20210112 | A | P1 | 7 |
| 20210105 | B | P1 | 1 |
| 20210105 | A | P2 | 5 |
我查看了类似问题的答案,但由于某种原因无法从解决类似问题的答案跳转到适用于我的环境的代码。
编辑:我尝试了下面的代码,取自this question 的答案。它为单个位置/部件组合返回多行。我已经尝试过该问题中的其他答案,但没有运气让它们执行。
SELECT *
FROM t
WHERE DATE > '20210401' AND DATE in (SELECT max(DATE)
FROM t GROUP BY LOCATION) order by PRODUCT desc
谢谢!
【问题讨论】:
-
请分享您对这个问题的尝试。