sql - SQL % 随时间增加
问题描述
我希望有人能帮帮忙。我正在使用 SQL Server 2016,并且我的数据如下所示;
OrderID Value SubscriptionLengthInMonths SubscriptionStart SubscriptionEnd Renew
2344 1920 24 14/05/2018 14/05/2020 1
2555 5376 12 01/03/2018 01/03/2019 1
我需要的是按年细分的按月添加的每月付款价值。我们通过将 SubscriptionValue 除以 SubscriptionLengthInMonths 来计算月值。
棘手的是有时我的数据上有一个标志(自动更新),这意味着如果值为 1,订阅将在 SubscriptionEnd 上自动更新,与原始订阅相同的月份。发生这种情况时,每月费用会增加 2%。我需要显示每个订阅的月费的列,按年份细分。上述示例的理想输出如下所示
OrderID SubscriptionValue SubscriptionLengthInMonths 2018 2019 2020 2021
2344 1920 24 80 80 81.6 81.6
2555 5376 12 448 456.96 466.06 475.36
OrderID 2344 付款在 2018 年和 2019 年都是 80 的原因是因为这是一个 2 年(24 个月)订阅,直到 2020 年才会自动续订。这会在 2020 年再次续订(这反映在下面,因为百分比已经为 2020 年和 2021 年添加)
OrderID 2555 每 12 个月更新一次,这就是为什么在所有年份都应用百分比增加的原因。
我知道这很复杂,只是希望有人能告诉我如何实现这一点。谢谢,杰斯
解决方案
如果我理解正确,您希望每个订阅期的每月金额增加 2.0。
算术逻辑是这样的:
select t.*,
(power(1.02,
datediff(month, subscriptionStart, '2018-12-31') / SubscriptionLengthInMonths
) * (SubscriptionValue / SubscriptionLengthInMonths)
) monthly_2018,
(power(1.02,
datediff(month, subscriptionStart, '2019-12-31') / SubscriptionLengthInMonths
) * (SubscriptionValue / SubscriptionLengthInMonths)
) monthly_2019,
. . .
from t;
这应该适用于您的数据。我不确定自动更新逻辑是如何发挥作用的。
推荐阅读
- python - 无法使用 yFinance JSON 值创建 DataFrame
- c# - 无法在 MVC 中动态更改部分视图
- sql - 请找到这个问题的解决方案。(在 PL SQL 中)--------
- visual-studio-code - VSCode 扩展 - 获取编辑器类型
- c - 如何将结构存储在链表中
- c# - 如何使用 POST 请求在 C# API 中创建对象?
- python - 什么时候应该使用列表切片进行整个列表分配?
- javascript - Thymeleaf 生成的列表在一页上的多个 javascript 计时器
- tensorflow - 在树莓派 (tensorflow) 上进行对象检测的项目
- flutter - 动画切换器与案例条件 Streambuilder 相结合