从上个月开始的季度计数的自定义SQL

从上个月开始的季度计数的自定义SQL,sql,date,partitioning,snowflake-cloud-data-platform,Sql,Date,Partitioning,Snowflake Cloud Data Platform,我需要创建一个自定义的季度计算器,从上个月开始计算,无论我们所在的月份、年份如何,然后倒数得到季度。上一年的Wuarter编号为5、6等 因此,我们的目标是将季度分组推迟一个月 假设我们在12月11日运行查询,结果应该是: YEAR MNTH QTR QTR_ALT 2017 1 1 12 2017 2 1 12 2017 3 1 11 2017 4 2 11 2017 5 2 11 20

我需要创建一个自定义的季度计算器,从上个月开始计算,无论我们所在的月份、年份如何,然后倒数得到季度。上一年的Wuarter编号为5、6等

因此,我们的目标是将季度分组推迟一个月

假设我们在12月11日运行查询,结果应该是:

YEAR MNTH QTR QTR_ALT 2017 1 1 12 2017 2 1 12 2017 3 1 11 2017 4 2 11 2017 5 2 11 2017 6 2 10 2017 7 3 10 2017 8 3 10 2017 9 3 9 2017 10 4 9 2017 11 4 9 2017 12 4 8 2018 1 1 8 2018 2 1 8 2018 3 1 7 2018 4 2 7 2018 5 2 7 2018 6 2 6 2018 7 3 6 2018 8 3 6 2018 9 3 5 2018 10 4 5 2018 11 4 5 2018 12 4 1 2019 1 1 1 2019 2 1 1 2019 3 1 2 2019 4 2 2 2019 5 2 2 2019 6 2 3 2019 7 3 3 2019 8 3 3 2019 9 3 4 2019 10 4 4 2019 11 4 4 2019 12 4 THIS IS SKIPPED 起点是消除当前的_日期,以便数据在上个月的最后一天结束

SELECT DISTINCT YEAR, MNTH, QTR FROM TABLE WHERE DATA BETWEEN (SELECT DATE_TRUNC(YEAR,ADD_MONTHS(CURRENT_DATE, -24))) AND (SELECT DATE_TRUNC(MONTH,CURRENT_DATE)-1) ORDER BY YEAR, MNTH, QTR
下面是您需要的所有日期,并带有额外的列

select to_char(add_months(a.dt, -b.y), 'YYYY') as year,
to_char(add_months(a.dt, -b.y), 'MM') as month,
ceil(to_number(to_char(add_months(a.dt, -b.y), 'MM')) / 3) as qtr,
ceil(b.y/3) as alt_qtr
from
(select trunc(sysdate, 'MONTH') as dt from dual) a,
(select rownum as y from dual connect by level <= 24) b;

为什么2019/11有时在第三季度,有时在第四季度?撰写问题时出错,将进行编辑;对于雪花DWH,我做了轻微的更改:从TABLEGENERATORROWCOUNT=>24 ORDER BY 1b中选择SEQ8+1作为Y