我正在使用一个表,它有时会重复相同的数据,我想查询它以获得最近的值和它之前的值。table是这样的:
+-------------+----------------+------+-------+
| Item Number | Effective Date | Cost | Price |
+-------------+----------------+------+-------+
| 1 | 01/01/2020 | 8.00 | 11.00 |
| 1 | 01/01/2020 | 8.00 | 10.50 |
| 2 | 09/22/2020 | 6.25 | 6.50 |
| 1 | 01/01/2020 | 8.00 | 10.50 |
| 1 | 05/07/2019 | 7.00 | 10.50 |
| 1 | 03/12/2018 | 6.00 | 10.50 |
| 2 | 03/12/2018 | 6.00 | 6.50 |
| 2 | 03/12/2018 | 6.00 | 6.50 |
| 1 | 01/01/2020 | 7.00 | 10.50 |
| 1 | 08/01/2016 | 5.25 | 10.50 |
+-------------+----------------+------+-------+
我试图让查询结果只列出最近成本的日期,并且日期和成本是在它之前的日期和成本,并且忽略所有重复的数据,如下所示:
+-------------+---------------+---------------+--------------+--------------+
| Item Number | Previous Date | Previous Cost | Current Date | Current Cost |
+-------------+---------------+---------------+--------------+--------------+
| 1 | 05/07/2019 | 7.00 | 01/01/2020 | 8.00 |
| 2 | 03/12/2018 | 6.00 | 09/22/2020 | 6.50 |
+-------------+---------------+---------------+--------------+--------------+
我一直在努力解决延迟和分区问题,但是,我仍然会得到这样的副本:
+-------------+---------------+---------------+--------------+--------------+
| Item Number | Previous Date | Previous Cost | Current Date | Current Cost |
+-------------+---------------+---------------+--------------+--------------+
| 1 | 01/20/2020 | 8.00 | 01/01/2020 | 8.00 |
+-------------+---------------+---------------+--------------+--------------+
谢谢你的任何想法!
2条答案
按热度按时间ldxq2e6h1#
我想您需要查看每个项目编号的最后两条记录,无论何时按日期列的降序排列。我准备了这个分组和排序,并使用
DISTINCT
在下面的查询中,我们不知道哪一个成本是belayer发现的公共日期的最新成本。我只是把最大值看作你的结果和通货膨胀的性质:)。我决定了以前和现在的专栏的贡献
ROW_NUMBER()
最后一步中的函数:演示
ua4mk5z42#
我可以为你建议以下方法。
输出将如下所示。
注:我有其他日期格式在甲骨文是
dd.mm.yyyy
.