大佬教程收集整理的这篇文章主要介绍了如果同一订单 ID 的列中的值发生变化,如何放置标志是/否,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试选择随时间变化关税的订单(客户)。我有这些列:
customer_account_ID | VERSION_CHANGE_numbER | VERSION_CHANGE_DATE | 关税 |
---|---|---|---|
1230000000 | 1 | 01-01-2018 | day24 关税 |
1230000000 | 2 | 11-01-2018 | day24 关税 |
1230000000 | 3 | 15-02-2018 | day12 关税 |
我需要在右侧站点上放置标记“Y”,以防关税发生变化,在这种情况下,从“第 24 天关税”变为“第 12 天关税”。
然后我需要按 customer_account_ID 对其进行汇总,以获取哪些客户更改了关税以及何时更改的信息。
我尝试过 LAG 功能,但无法得到正确答案。
你能帮我吗?
谢谢, 帕维尔
您可以通过以下方式获取帐户以前的资费:
lag(tariff) over (partition by customer_account_id order by version_change_number)
如果一致,您可以按 version_change_number
或 version_CHANGE_DATE
订购;如果不是,您需要选择使用哪个。
然后您可以在 case 表达式中使用它,包括处理为空的延迟(对于每个帐户的第一个版本/日期):
SELEct customer_account_id,version_change_number,version_CHANGE_DATE,tariff,@R_618_3035@en lag(tariff) over (partition by customer_account_id order by version_change_number) is null
or lag(tariff) over (partition by customer_account_id order by version_change_number) != tariff then 'Yes'
else 'No'
end as flag
from orders
或者为了避免重复延迟,将其放在 CTE 或内联视图中:
SELEct customer_account_id,@R_618_3035@en lag_tariff is null or lag_tariff != tariff then 'Yes'
else 'No'
end as flag
from (
SELEct customer_account_id,lag(tariff) over (partition by customer_account_id order by version_change_number) as lag_tariff
from orders
)
CUSTOMER_account_ID | VERSION_CHANGE_numbER | VERSION_CHANGE_DATE | 关税 | FLAG |
---|---|---|---|---|
1230000000 | 1 | 01-JAN-18 | day24 关税 | 是 |
1230000000 | 2 | 11-JAN-18 | day24 关税 | 否 |
1230000000 | 3 | 2018 年 2 月 15 日 | day12 关税 | 是 |
db<>fiddle
以上是大佬教程为你收集整理的如果同一订单 ID 的列中的值发生变化,如何放置标志是/否全部内容,希望文章能够帮你解决如果同一订单 ID 的列中的值发生变化,如何放置标志是/否所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。