对会计年度使用重叠月份概念

using an overlapping months concept for fiscal year

提问人:Malini Bakthavatchalam 提问时间:10/4/2023 最后编辑:Chris AlbertMalini Bakthavatchalam 更新时间:10/10/2023 访问量:58

问:

我正在努力了解我公司内部的客户路径。我们想看看重叠的月份 2021 年 1 月至 2022 年 6 月(22 财年),然后是 2022 年 1 月至 2023 年 6 月(23 财年)。但我的日历表只计算 12 个月的财政年度。所以,我尝试了很多动态查询,但是 我无法达到预期的结果。如果我只看一个会计年度22,我就可以获得结果,但我需要使其自动化,这样就不需要对日期范围进行自定义查询。

SELECT 
    CUSTOMER_SK,
    dd. fiscal_year_num as FISCALYEAR,
    CASE
    WHEN MAX(is_new_customer_encounter) = TRUE THEN 'NEW'
    WHEN MAX(is_reengaged_customer_encounter) = TRUE THEN 'REENGAGED'
    WHEN MAX(is_retained_customer_encounter) = TRUE THEN 'RETAINED'
    ELSE 'UNKNOWN'
    END AS CUSTOMER_CATEGORY
FROM
    refined.core.calendar dd 
    join enriched.analytics.encounter_system_level sys 
        on dd.calendar_date = sys.encounter_ts::date or dd.year_num= =year(sys.encounter_ts)
WHERE
    dd.fiscal_year_num between 2023 and 2024
GROUP BY 
    1,2;

对这个问题有什么想法吗?

我确实尝试了动态日期,但没有任何效果。

这是我想要的结果

客户 访问日期 财年
客户 1 01/25/2023 2023
客户 2 07/11/2023 2024
客户 1 01/25/2023 2024
雪花云数据平台 ansi-sql-92

评论


答:

0赞 Chris Albert 10/5/2023 #1

您可以使用 CTE 创建自己的日历表版本,其中包含您的日期。下面的示例从现有日历表中获取基本数据集。然后,它将它与每年前 6 个月的日历数据集的副本合并,并将会计年度减少 1。

SQL 小提琴

WITH FiscalCalendar AS
(
    SELECT *
    FROM refined.core.calendar
    UNION ALL
    SELECT calendar_date, fiscal_year_num - 1
    FROM refined.core.calendar
    WHERE MONTH(calendar_date) >= 1 AND MONTH(calendar_date) <= 6
)

评论

0赞 Malini Bakthavatchalam 10/9/2023
嘿克里斯,我确实尝试过这个 cte,但它仍然只给出 12 个月作为财政年度,而不是 18 个月。将 calen as ( SELECT calendar_date,fiscal_year_num FROM REFINED.CORE.CALENDAR UNION ALL SELECT calendar_date, fiscal_year_num + 1 FROM FINENED.CORE.CALENDAR 其中 MONTH(calendar_date) >= 1 和 MONTH(calendar_date) <= 6 ) select * from calen where calendar_Date >= '01/01/2022' 限制 500
0赞 Chris Albert 10/10/2023
呜呜。我犯了一个错误。更新了答案并发布了小提琴。
0赞 Malini Bakthavatchalam 10/10/2023
我不能看小提琴.有没有办法看它?
0赞 Malini Bakthavatchalam 10/10/2023
0 基本上 2022 年 1 月 - 2023 年 6 月应该是 2023 财年,2023 年 1 月 - 2024 年 6 月应该是 2024 财年,但我得到的是 2024 年 1 月 1 日,作为 2023 财年,这不是我想要的日期。
0赞 Malini Bakthavatchalam 10/10/2023
将 calen as ( SELECT calendar_date, fiscal_year_num FROM REFINED.CORE.CALENDAR UNION ALL SELECT calendar_date, fiscal_year_num - 1 FROM FINENED.CORE.CALENDAR 其中 MONTH(calendar_date) >= 1 和 MONTH(calendar_date) <= 6) select * from calen where fiscal_year_num = 2023 limit 1000