程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果同一订单 ID 的列中的值发生变化,如何放置标志是/否大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如果同一订单 ID 的列中的值发生变化,如何放置标志是/否?

开发过程中遇到如果同一订单 ID 的列中的值发生变化,如何放置标志是/否的问题如何解决?下面主要结合日常开发的经验,给出你关于如果同一订单 ID 的列中的值发生变化,如何放置标志是/否的解决方法建议,希望对你解决如果同一订单 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_numberversion_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,请注明来意。