程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了SQL中的行组比较大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决SQL中的行组比较?

开发过程中遇到SQL中的行组比较的问题如何解决?下面主要结合日常开发的经验,给出你关于SQL中的行组比较的解决方法建议,希望对你解决SQL中的行组比较有所启发或帮助;

我们的数据有问题,我正在努力解决。我们有公司,公司有订阅,订阅有订阅项目(多项服务,例如访问特定产品功能、SLA、服务费等)。 例如,我的表中有以下数据:

+----------------+------------+-------------+------------+--------------------------+--------------------------+
|subscription_ID |company_name|subs_item_ID |item_name   |started_at                |ended_at             
+----------------+------------+-------------+------------+--------------------------+--------------------------+
|123             |ABC         |1            |service_fee |2019-02-14 00:00:00.000000|2019-10-01 00:00:00.000000|
|123             |ABC         |2            |feature_A   |2019-02-14 00:00:00.000000|2019-10-01 00:00:00.000000|
|123             |ABC         |3            |feature_B   |2019-02-14 00:00:00.000000|2019-10-01 00:00:00.000000|
|123             |ABC         |4            |feature_C   |2019-02-14 00:00:00.000000|2019-10-01 00:00:00.000000|
|123             |ABC         |5            |feature_B   |2019-11-01 00:00:00.000000|2021-11-01 00:00:00.000000|
|123             |ABC         |6            |feature_C   |2019-11-01 00:00:00.000000|2021-11-01 00:00:00.000000|
+----------------+------------+-------------+------------+-----------------------------------------------------+

在这种情况下,feature_Bfeature_C 于 2019 年 10 月 1 日结束并在 2019 年 11 月 1 日重新开始(例如,发生订阅调整时)。由于订阅修改方式的性质,当某些订阅项目重叠时,有时我们会遇到数据质量问题:

+----------------+------------+-------------+------------+--------------------------+--------------------------+

|subscription_ID |company_name|subs_item_ID |item_name   |started_at                |ended_at             
+----------------+------------+-------------+------------+--------------------------+--------------------------+
|123             |ABC         |1            |service_fee |2019-02-14 00:00:00.000000|2019-10-01 00:00:00.000000|
|123             |ABC         |2            |feature_A   |2019-02-14 00:00:00.000000|2019-10-01 00:00:00.000000|
|123             |ABC         |3            |feature_B   |2019-02-14 00:00:00.000000|2019-10-01 00:00:00.000000|
|123             |ABC         |4            |feature_C   |2019-02-14 00:00:00.000000|2019-10-01 00:00:00.000000|
|123             |ABC         |5            |feature_C   |2019-02-14 00:00:00.000000|2021-10-01 00:00:00.000000|
|123             |ABC         |6            |feature_B   |2019-10-01 00:00:00.000000|2021-11-01 00:00:00.000000|
|123             |ABC         |7            |feature_C   |2019-10-01 00:00:00.000000|2021-11-01 00:00:00.000000|
+----------------+------------+-------------+------------+-----------------------------------------------------+

根据业务规则,允许具有相同 item_name 的多个项目同时开始(参见 feature_C 有 2 个具有不同 ID 的条目)。在这种情况下,feature_B(subs_item_ID = 6) 和 feature_C (subs_item_ID = 7 ) 将在 2019-10-01 计算两次作为旧项目的结束日期(subs_item_ID in (3,4,5)与新项目的开始日期重叠。这是人为错误。在这种情况下,旧项目的结束日期必须是 2019-09-30。新项目开始日期前一天。

我已尝试解决该问题,我设法通过检查每个项目名称的下一个开始日期来解决此问题,但仅限于只有 1 个项目重叠时。在给定的示例中,两个 subs_item_ID in (3,4) 的结束日期都需要固定。

感谢任何提示。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的SQL中的行组比较全部内容,希望文章能够帮你解决SQL中的行组比较所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。