我有一个表,用于存储其他表中数据的历史值:
ObjectId | Value | UpdatedAt
1 | A | 2020-07-15
1 | B | 2020-07-16
1 | C | 2020-07-17
2 | A | 2020-07-15
2 | B | 2020-07-16
现在我需要从这样的表中生成“change log”,它将显示什么是旧值、新值以及何时发生更新:
ObjectId | OldValue | NewValue | UpdatedAt
1 | A | B | 2020-07-16
1 | B | C | 2020-07-17
2 | A | B | 2020-07-16
不幸的是,我不能更改现有表的结构,也不能将旧值放在那里,我需要一个查询来提取这个值。
4条答案
按热度按时间axkjgtzd1#
你可以使用窗口功能
lead()
做分区ObjectId
. 这是演示。输出:
6ioyuze22#
您可以使用窗口函数来实现该结果。
jv4diomz3#
表脚本:
演示链接
4zcjmb1e4#
你也可以使用
Widowfunction (Lead())
为了解决这个问题但所提出的解决方案非常简单,同时对类似的操作也非常有用(
computational and comparative
)在行和两列或多列之间