大佬教程收集整理的这篇文章主要介绍了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_B
和 feature_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,请注明来意。