我正在尝试计算每个财政年度的"季度至今"值。我的数据集中的主要字段可以概括为:
客户 ID、服务开始日期、服务结束日期、服务级别
我有一个函数,当交叉乘以开始和结束日期字段时,为每个月创建一个记录。请注意,我的财政年度从 4 月开始。 所以我的表格看起来像这样:
Customer ID, Service Start Date, Service End Date, Service Level, Fiscal Year, Fiscal Quarter, Fiscal Month Start
12345, Jan 1, 2019, Apr 30, 2019, 93, Q4, Jan 2019
12345, Jan 1, 2019, Apr 30, 2019, 93, Q4, Feb 2019
12345, Jan 1, 2019, Apr 30, 2019, 93, Q4, Mar 2019
12345, Jan 1, 2019, Apr 30, 2019, 93, Q1, Apr 2019
我苦苦挣扎的是,我想计算一个财政年度内客户最高服务级别迄今为止的唯一季度。因此,我们希望将每个会计年度与该客户的最高服务级别进行分组。
所以例如: 如果客户在 2018 年 11 月以 93 的服务级别开始服务 2019 年 5 月,服务级别为 94 的客户服务
结束如果这个假设的患者在 1819 财年改变了服务水平,我希望能够在财政年度计数内获得最后一个季度: 2018 年第 3 季度:SRC 94 为 1 个 2018 年第 4 季度:SRC 94 为 2 个 2019 年第 1 季度:SRC 94 为 1 个 2019 年第 2 季度:SRC 94 为 1 个 2019 年第 3 季度:SRC 94 为 1
个但是,如果他们在 2019 年 4 月(这是一个不同的财政年度(切换服务级别,我的计数将是
Q3 2018: 1 for SRC 93
Q4 2018: 2 for SRC 93
Q1 2019: 1 for SRC 94
Q2 2019: 1 for SRC 94
Q3 2019: 1 for SRC 94
到目前为止,我得到的是使用row_number函数的每位患者每季度的"唯一计数":
select ROW_NUMBER() OVER(PARTITION BY customer_ID, FISCALYEAR, Fiscalquarterstartdate ORDER BY fiscalmonthstartdate DESC) PtRnk
into #Temp
然后我会选择所有 ptRnk = 1 的记录,然后将该 ptrnk 字段相加。
我有点挣扎,尽管如何处理我上面概述的情况。任何帮助,非常感谢。
使用子查询获取最高的服务级别,然后按以下方式进行简单的分组:
未经测试
select T1.Customer_ID, T1.Fiscal_Quarter, T1.Fiscal_Year,
count(*) Services_Received, T2.Service_Level
from YourTable T1
inner join (
select Customer_ID, Fiscal_Year, max(Service_Level) Service_Level
from YourTable
group by Customer_ID, Fiscal_Year
) T2
on T1.Customer_ID = T2.Customer_ID
and T1.Fiscal_Year = T2.Fiscal_Year
group by T1.Customer_ID, T1.Fiscal_Quarter, T1.Fiscal_Year, T2.Service_Level