我正在尝试用正确的记录替换特定日期范围内的一些错误输入记录。然而,我不确定是否有一个有效的方法来做到这一点。因此,我的问题是如何在sql中将(静态)记录范围转换为该范围之后的记录值?下面你会发现一个例子来阐明我试图实现什么。
在本例中,您可以看到1号客户在2020年6月25日至2020年6月29日期间属于0号组(无)。从2020年6月30日到2020年7月5日,1号客户的组号从0变为11。此静态周期包含错误的记录,应更改为在2020年7月6日有效的值(组号==10)。有办法吗?
我正在尝试用正确的记录替换特定日期范围内的一些错误输入记录。然而,我不确定是否有一个有效的方法来做到这一点。因此,我的问题是如何在sql中将(静态)记录范围转换为该范围之后的记录值?下面你会发现一个例子来阐明我试图实现什么。
在本例中,您可以看到1号客户在2020年6月25日至2020年6月29日期间属于0号组(无)。从2020年6月30日到2020年7月5日,1号客户的组号从0变为11。此静态周期包含错误的记录,应更改为在2020年7月6日有效的值(组号==10)。有办法吗?
3条答案
按热度按时间vfwfrxfs1#
如果我理解正确,您可以使用窗口函数获取特定日期和时间的数据
case
分配给特定日期范围的逻辑:如果要更新值,可以使用
JOIN
:9njqaruj2#
我认为Windows的功能
first_value()
你想要什么:ss2ws0br3#
你可以做下面的例子。这里我选择了一个条件,即如果role='leader'是一个坏记录,那么您将应用groupnumber1和role1列中的下一个可用组编号-->。
我在excel示例中使用了较小的行子集。
db小提琴链接https://dbfiddle.uk/?rdbms=db2_11.1&fiddle=c95d12ced067c1df94947848b5a94c14