You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Synapse专用SQL池生成按年月拆分的客户收入表?

背景信息

客户表存储了每位客户的信息、订阅类型,以及基于订阅类型的会员开始日期、下次付款日期等数据,表结构及示例数据如下:
客户表:

Customer_IDCharge_IDMembership_TypeMembership_StartDateMembership_EndDateMembership_StatusNext_Payment_DateGross
cus_OzcGFMWjj7e6wfch_3OBd1JJuo27Vzw6d0tzOgF7cMembership £216 Yearly2023-11-12NULLActive2024-11-12£216.00
cus_OynI9WYzFKG7ZJch_3OApgkJuo27Vzw6d0bOJgdYfMembership £5 Monthly2023-11-10NULLActive2023-12-10£5.00
cus_OzAOs3xIx4p3vdch_3OBC21Juo27Vzw6d1AGyK9LQMembership £5 Monthly2023-11-11NULLActive2023-12-11£5.00
cus_OzXKT687CWwQuSch_3OBYFiJuo27Vzw6d1FmiNkGmMembership £5 Monthly2023-11-12NULLActive2023-12-12£5.00
cus_OzNXmqgA4I7zy2ch_3OBOkMJuo27Vzw6d0neOzJ13Membership £10 Monthly2023-11-11NULLActive2023-12-11£10.00

需求

需在Azure Synapse专用SQL池中创建名为Revenue的表,按客户、年度、月度拆分展示确认收入与递延收入,目标表结构及示例数据如下:
收入表(Revenue Table):

Customer_IDCustomer_NameMembership_TypeYearJanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember
cus_OzcGFMWjj7e6wfch_3OBd1JJuo27Vzw6d0tzOgF7cMembership £216 Yearly2023NULLNULLNULLNULLNULLNULLNULLNULLNULLNULL11.2131147518.29508197
cus_OzcGFMWjj7e6wfch_3OBd1JJuo27Vzw6d0tzOgF7cMembership £216 Yearly202418.2950819717.114754118.2950819717.7049180318.2950819717.7049180318.2950819718.2950819717.7049180318.295081976.491803279NULL
cus_OynI9WYzFKG7ZJch_3OApgkJuo27Vzw6d0bOJgdYfMembership £5 Monthly2023NULLNULLNULLNULLNULLNULLNULLNULLNULLNULL3.51.5
cus_OzAOs3xIx4p3vdch_3OBC21Juo27Vzw6d1AGyK9LQMembership £5 Monthly2023NULLNULLNULLNULLNULLNULLNULLNULLNULLNULL3.3333333331.666666667
cus_OzXKT687CWwQuSch_3OBYFiJuo27Vzw6d1FmiNkGmMembership £5 Monthly2023NULLNULLNULLNULLNULLNULLNULLNULLNULLNULL3.1666666671.833333333
cus_OzNXmqgA4I7zy2ch_3OBOkMJuo27Vzw6d0neOzJ13Membership £10 Monthly2023NULLNULLNULLNULLNULLNULLNULLNULLNULLNULL6.6666666673.333333333
cus_P087tismWgTMyMch_3OC7qDJuo27Vzw6d0hOuCQT2Membership £54 Yearly2023NULLNULLNULLNULLNULLNULLNULLNULLNULLNULL2.4545454554.227272727
cus_P087tismWgTMyMch_3OC7qDJuo27Vzw6d0hOuCQT2Membership £54 Yearly20244.2272727273.9545454554.2272727274.0909090914.2272727274.0909090914.2272727274.2272727274.0909090914.2272727274.0909090911.636363636

当前进展与问题

已编写单个客户的收入计算脚本(以cus_OzcGFMWjj7e6wf为例),代码如下:

declare @Membership_StartDate date;
declare @Membership_EndDate date;
declare @Gross INT;

set @Membership_StartDate = '2023-11-12';
set @Membership_EndDate = '2024-11-12';
set @Gross = 216.000000;

With FirstQuery AS
(
select year(dt) [Year], month(dt) [Month], count(*) NumberofDays
from (select top(datediff(d, dateadd(dd,-1,@Membership_StartDate), dateadd(dd,-1,@Membership_EndDate))) dateadd(d, row_number() over (order by (select null)), dateadd(dd,-1,@Membership_StartDate)) dt
from sys.columns) q
group by year(dt), month(dt)
)   
select Year
    , Jan = MAX(case when Month = 1 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)
    , Feb = MAX(case when Month = 2 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)
    , Mar = MAX(case when Month = 3 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)
    , Apr = MAX(case when Month = 4 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)
    , May = MAX(case when Month = 5 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)
    , Jun = MAX(case when Month = 6 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)
    , Jul = MAX(case when Month = 7 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)
    , Aug = MAX(case when Month = 8 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)
    , Sep = MAX(case when Month = 9 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)
    , Oct = MAX(case when Month = 10 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)
    , Nov = MAX(case when Month = 11 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)
    , Dec = MAX(case when Month = 12 then (1.0*NumberofDays)/(1.0*DATEDIFF(day, @Membership_StartDate, @Membership_EndDate))*(1.0*@Gross) end)    
from FirstQuery
group by Year

请求指导如何将该脚本适配客户表中的所有客户,以生成目标Revenue表。


内容的提问来源于stack exchange,提问作者Vivek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 11:29:51