You are on page 1of 10

// CREATE DIM_DATE table

create or replace TABLE DIM_DATE (


DATE_KEY NUMBER(38,0),
CALENDAR_DATE DATE,
CALENDAR_DATE_STR VARCHAR(50),
CALENDAR_DATE_ALT VARCHAR(50),
CALENDAR_YEAR NUMBER(38,0),
CALENDAR_YEAR_DESC VARCHAR(50),
CALENDAR_QUARTER NUMBER(38,0),
CALENDAR_QUARTER_DESC VARCHAR(50),
CALENDAR_QUARTER_YEAR NUMBER(38,0),
MONTH_NO_OF_YEAR NUMBER(38,0),
MONTH_YEAR NUMBER(38,0),
MONTH_NAME VARCHAR(50),
MONTH_YEAR_DESC VARCHAR(50),
MONTH_YEAR_ALT VARCHAR(50),
DAY_NO_OF_MONTH NUMBER(38,0),
NO_OF_DAYS_IN_MONTH NUMBER(38,0),
DAY_NO_OF_YEAR NUMBER(38,0),
WEEK_NO_YEAR NUMBER(38,0),
WEEK_YEAR NUMBER(38,0),
ISO_WEEK_NO_OF_YEAR NUMBER(38,0),
ISO_WEEK_YEAR NUMBER(38,0),
WEEK_DAY NUMBER(38,0),
WEEK_DAY_NAME VARCHAR(50),
NZ_FISCAL_YEAR NUMBER(38,0),
NZ_FISCAL_YEAR_DESC VARCHAR(50),
NZ_FISCAL_QUARTER NUMBER(38,0),
NZ_FISCAL_QUARTER_YEAR NUMBER(38,0),
NZ_FISCAL_QUARTER_DESC VARCHAR(50),
NZ_FISCAL_MONTH NUMBER(38,0),
NZ_FISCAL_MONTH_YEAR NUMBER(38,0),
NZ_FISCAL_MONTH_DESC VARCHAR(50),
AU_FISCAL_YEAR NUMBER(38,0),
AU_FISCAL_YEAR_DESC VARCHAR(50),
AU_FISCAL_QUARTER NUMBER(38,0),
AU_FISCAL_QUARTER_YEAR NUMBER(38,0),
AU_FISCAL_QUARTER_DESC VARCHAR(50),
AU_FISCAL_MONTH NUMBER(38,0),
AU_FISCAL_MONTH_YEAR NUMBER(38,0),
AU_FISCAL_MONTH_DESC VARCHAR(50),
IS_WEEK_DAY_FLAG NUMBER(38,0),
IS_WEEK_DAY_DESC VARCHAR(50),
IS_NZ_PUBLIC_HOLIDAY_FLAG NUMBER(38,0),
IS_NZ_PUBLIC_HOLIDAY_DESC VARCHAR(50),
NZ_PUBLIC_HOLIDAY_FULL_DESC VARCHAR(50),
IS_AU_PUBLIC_HOLIDAY_FLAG NUMBER(38,0),
IS_AU_PUBLIC_HOLIDAY_DESC VARCHAR(50),
AU_PUBLIC_HOLIDAY_FULL_DESC VARCHAR(50),
CURRENT_YEAR NUMBER(38,0),
CURRENT_MONTH NUMBER(38,0),
CURRENT_DAY NUMBER(38,0)
);

//Set the start date and number of years to produce


SET START_DATE = '1990-01-01' ; //Start date
SET NUMBER_DAYS= (Select TRUNC(40 * 365.25)) ; //Calculate number of days (40 yrs
here, adjust to your need! )
// Show variables; //Verify the set values in variables
//Set the following parameters to force ISO
alter session set week_start=1,week_of_year_policy=1;

Create or Replace TEMPORARY table NZPUBLIC_HOLIDAYS (


DATE_KEY INT,
DESCRIPTION VARCHAR(50),
CONSTRAINT UNIQUE_DATE_KEY UNIQUE (DATE_KEY) ENFORCED
);
Create or Replace TEMPORARY table AUPUBLIC_HOLIDAYS (
DATE_KEY INT,
DESCRIPTION VARCHAR(50),
CONSTRAINT UNIQUE_DATE_KEY UNIQUE (DATE_KEY) ENFORCED
);
-- insert annual public holidays
-- 1990-2030 NZ holidays
insert into NZPUBLIC_HOLIDAYS(DATE_KEY,Description)
values
// 1990
(19900101,'New Year''s Day'), (19900102,'Day after New Year''s Day'),
(19900206,'Waitangi Day'), (19900413,'Good Friday'), (19900416,'Easter Monday'),
(19900425,'ANZAC Day'),
(19900604,'Queen''s Birthday'), (19901022,'Labour Day'), (19901225,'Christmas
Day'), (19901226,'Boxing Day'),
// 1991
(19910101,'New Year''s Day'), (19910102,'Day after New Year''s Day'),
(19910206,'Waitangi Day'), (19910329,'Good Friday'), (19910401,'Easter Monday'),
(19910425,'ANZAC Day'),
(19910603,'Queen''s Birthday'), (19911028,'Labour Day'), (19911225,'Christmas
Day'), (19911226,'Boxing Day'),
// 1992
(19920101,'New Year''s Day'), (19920102,'Day after New Year''s Day'),
(19920206,'Waitangi Day'), (19920417,'Good Friday'), (19920420,'Easter Monday'),
(19920425,'ANZAC Day'),
(19920601,'Queen''s Birthday'), (19921026,'Labour Day'), (19921225,'Christmas
Day'), (19921228,'Boxing Day'),
// 1993
(19930101,'New Year''s Day'), (19930104,'Day after New Year''s Day'),
(19930206,'Waitangi Day'), (19930409,'Good Friday'), (19930412,'Easter Monday'),
(19930425,'ANZAC Day'),
(19930607,'Queen''s Birthday'), (19931025,'Labour Day'), (19931227,'Christmas
Day'), (19931228,'Boxing Day'),
// 1994
(19940103,'New Year''s Day'), (19940104,'Day after New Year''s Day'),
(19940206,'Waitangi Day'), (19940401,'Good Friday'), (19940404,'Easter Monday'),
(19940425,'ANZAC Day'),
(19940606,'Queen''s Birthday'), (19941024,'Labour Day'), (19941226,'Christmas
Day'), (19941227,'Boxing Day'),
// 1995
(19950102,'New Year''s Day'), (19950103,'Day after New Year''s Day'),
(19950206,'Waitangi Day'), (19950414,'Good Friday'), (19950417,'Easter Monday'),
(19950425,'ANZAC Day'),
(19950605,'Queen''s Birthday'), (19951023,'Labour Day'), (19951225,'Christmas
Day'), (19951226,'Boxing Day'),
// 1996
(19960101,'New Year''s Day'), (19960102,'Day after New Year''s Day'),
(19960206,'Waitangi Day'), (19960405,'Good Friday'), (19960408,'Easter Monday'),
(19960425,'ANZAC Day'),
(19960603,'Queen''s Birthday'), (19961028,'Labour Day'), (19961225,'Christmas
Day'), (19961226,'Boxing Day'),
// 1997
(19970101,'New Year''s Day'), (19970102,'Day after New Year''s Day'),
(19970206,'Waitangi Day'), (19970328,'Good Friday'), (19970331,'Easter Monday'),
(19970425,'ANZAC Day'),
(19970602,'Queen''s Birthday'), (19971027,'Labour Day'), (19971225,'Christmas
Day'), (19971226,'Boxing Day'),
// 1998
(19980101,'New Year''s Day'), (19980102,'Day after New Year''s Day'),
(19980206,'Waitangi Day'), (19980410,'Good Friday'), (19980413,'Easter Monday'),
(19980425,'ANZAC Day'),
(19980601,'Queen''s Birthday'), (19981026,'Labour Day'), (19981225,'Christmas
Day'), (19981228,'Boxing Day'),
// 1999
(19990101,'New Year''s Day'), (19990104,'Day after New Year''s Day'),
(19990206,'Waitangi Day'), (19990402,'Good Friday'), (19990405,'Easter Monday'),
(19990425,'ANZAC Day'),
(19990607,'Queen''s Birthday'), (19991025,'Labour Day'), (19991227,'Christmas
Day'), (19991228,'Boxing Day'),
// 2000
(20000103,'New Year''s Day'), (20000104,'Day after New Year''s Day'),
(20000206,'Waitangi Day'), (20000421,'Good Friday'), (20000424,'Easter Monday'),
(20000425,'ANZAC Day'),
(20000605,'Queen''s Birthday'), (20001023,'Labour Day'), (20001225,'Christmas
Day'), (20001226,'Boxing Day'),

// 2001
(20010101,'New Year''s Day'), (20010102,'Day after New Year''s Day'),
(20010206,'Waitangi Day'), (20010413,'Good Friday'), (20010416,'Easter Monday'),
(20010425,'ANZAC Day'),
(20010604,'Queen''s Birthday'), (20011022,'Labour Day'), (20011225,'Christmas
Day'), (20011226,'Boxing Day'),
// 2002
(20020101,'New Year''s Day'), (20020102,'Day after New Year''s Day'),
(20020206,'Waitangi Day'), (20020329,'Good Friday'), (20020401,'Easter Monday'),
(20020425,'ANZAC Day'),
(20020603,'Queen''s Birthday'), (20021028,'Labour Day'), (20021225,'Christmas
Day'), (20021226,'Boxing Day'),
// 2003
(20030101,'New Year''s Day'), (20030102,'Day after New Year''s Day'),
(20030206,'Waitangi Day'), (20030418,'Good Friday'), (20030421,'Easter Monday'),
(20030425,'ANZAC Day'),
(20030602,'Queen''s Birthday'), (20031027,'Labour Day'), (20031225,'Christmas
Day'), (20031226,'Boxing Day'),
// 2004
(20040101,'New Year''s Day'), (20040102,'Day after New Year''s Day'),
(20040206,'Waitangi Day'), (20040409,'Good Friday'), (20040412,'Easter Monday'),
(20040425,'ANZAC Day'),
(20040607,'Queen''s Birthday'), (20041025,'Labour Day'), (20041227,'Christmas
Day'), (20041228,'Boxing Day'),
// 2005
(20050103,'New Year''s Day'), (20050104,'Day after New Year''s Day'),
(20050206,'Waitangi Day'), (20050325,'Good Friday'), (20050328,'Easter Monday'),
(20050425,'ANZAC Day'),
(20050606,'Queen''s Birthday'), (20051024,'Labour Day'), (20051226,'Christmas
Day'), (20051227,'Boxing Day'),
// 2006
(20060102,'New Year''s Day'), (20060103,'Day after New Year''s Day'),
(20060206,'Waitangi Day'), (20060414,'Good Friday'), (20060417,'Easter Monday'),
(20060425,'ANZAC Day'),
(20060605,'Queen''s Birthday'), (20061023,'Labour Day'), (20061225,'Christmas
Day'), (20061226,'Boxing Day'),
// 2007
(20070101,'New Year''s Day'), (20070102,'Day after New Year''s Day'),
(20070206,'Waitangi Day'), (20000406,'Good Friday'), (20070409,'Easter Monday'),
(20070425,'ANZAC Day'),
(20070604,'Queen''s Birthday'), (20071022,'Labour Day'), (20071225,'Christmas
Day'), (20071226,'Boxing Day'),
// 2008
(20080101,'New Year''s Day'), (20080102,'Day after New Year''s Day'),
(20080206,'Waitangi Day'), (20080321,'Good Friday'), (20080324,'Easter Monday'),
(20080425,'ANZAC Day'),
(20080602,'Queen''s Birthday'), (20081027,'Labour Day'), (20081225,'Christmas
Day'), (20081226,'Boxing Day'),
// 2009
(20090101,'New Year''s Day'), (20090102,'Day after New Year''s Day'),
(20090206,'Waitangi Day'), (20090410,'Good Friday'), (20090413,'Easter Monday'),
(20090425,'ANZAC Day'),
(20090601,'Queen''s Birthday'), (20091026,'Labour Day'), (20091225,'Christmas
Day'), (20091228,'Boxing Day'),
// 2010
(20100101,'New Year''s Day'), (20100104,'Day after New Year''s Day'),
(20100206,'Waitangi Day'), (20100402,'Good Friday'), (20100405,'Easter Monday'),
(20100425,'ANZAC Day'),
(20100607,'Queen''s Birthday'), (20101025,'Labour Day'), (20101227,'Christmas
Day'), (20101228,'Boxing Day'),

// 2011
(20110103,'New Year''s Day'), (20110104,'Day after New Year''s Day'),
(20110206,'Waitangi Day'), (20110422,'Good Friday'), (20110425,'Easter Monday /
ANZAC Day'),
(20110606,'Queen''s Birthday'), (20111024,'Labour Day'), (20111226,'Christmas
Day'), (20111227,'Boxing Day'),
// 2012
(20120102,'New Year''s Day'), (20120103,'Day after New Year''s Day'),
(20120206,'Waitangi Day'), (20120406,'Good Friday'), (20120409,'Easter Monday'),
(20120425,'ANZAC Day'),
(20120604,'Queen''s Birthday'), (20121022,'Labour Day'), (20121225,'Christmas
Day'), (20121226,'Boxing Day'),
// 2013
(20130101,'New Year''s Day'), (20130102,'Day after New Year''s Day'),
(20130206,'Waitangi Day'), (20130329,'Good Friday'), (20130401,'Easter Monday'),
(20130425,'ANZAC Day'),
(20130603,'Queen''s Birthday'), (20131028,'Labour Day'), (20131225,'Christmas
Day'), (20131226,'Boxing Day'),
// 2014
(20140101,'New Year''s Day'), (20140102,'Day after New Year''s Day'),
(20140206,'Waitangi Day'), (20140418,'Good Friday'), (20140421,'Easter Monday'),
(20140425,'ANZAC Day'),
(20140602,'Queen''s Birthday'), (20141027,'Labour Day'), (20141225,'Christmas
Day'), (20141226,'Boxing Day'),
// 2015
(20150101,'New Year''s Day'), (20150102,'Day after New Year''s Day'),
(20150206,'Waitangi Day'), (20150403,'Good Friday'), (20150406,'Easter Monday'),
(20150427,'ANZAC Day'),
(20150601,'Queen''s Birthday'), (20151026,'Labour Day'), (20151225,'Christmas
Day'), (20151228,'Boxing Day'),
// 2016
(20160101,'New Year''s Day'), (20160104,'Day after New Year''s Day'),
(20160208,'Waitangi Day'), (20160325,'Good Friday'), (20160328,'Easter Monday'),
(20160425,'ANZAC Day'),
(20160606,'Queen''s Birthday'), (20161024,'Labour Day'), (20161226,'Christmas
Day'), (20161227,'Boxing Day'),
// 2017
(20170102,'New Year''s Day'), (20170103,'Day after New Year''s Day'),
(20170206,'Waitangi Day'), (20170414,'Good Friday'), (20170417,'Easter Monday'),
(20170425,'ANZAC Day'),
(20170605,'Queen''s Birthday'), (20171023,'Labour Day'), (20171225,'Christmas
Day'), (20171226,'Boxing Day'),
// 2018
(20180101,'New Year''s Day'), (20180102,'Day after New Year''s Day'),
(20180206,'Waitangi Day'), (20180330,'Good Friday'), (20180402,'Easter Monday'),
(20180425,'ANZAC Day'),
(20180604,'Queen''s Birthday'), (20181022,'Labour Day'), (20181225,'Christmas
Day'), (20181226,'Boxing Day'),
// 2019
(20190101,'New Year''s Day'), (20190102,'Day after New Year''s Day'),
(20190206,'Waitangi Day'), (20190419,'Good Friday'), (20190422,'Easter Monday'),
(20190425,'ANZAC Day'),
(20190603,'Queen''s Birthday'), (20191028,'Labour Day'), (20191225,'Christmas
Day'), (20191226,'Boxing Day'),
// 2020
(20200101,'New Year''s Day'), (20200102,'Day after New Year''s Day'),
(20200206,'Waitangi Day'), (20200410,'Good Friday'), (20200413,'Easter Monday'),
(20200427,'ANZAC Day'),
(20200601,'Queen''s Birthday'), (20201026,'Labour Day'), (20201225,'Christmas
Day'), (20201228,'Boxing Day'),

// 2021
(20210101,'New Year''s Day'), (20210104,'Day after New Year''s Day'),
(20210208,'Waitangi Day'), (20210402,'Good Friday'), (20210405,'Easter Monday'),
(20210426,'ANZAC Day'),
(20210607,'Queen''s Birthday'), (20211025,'Labour Day'), (20211227,'Christmas
Day'), (20211228,'Boxing Day'),
// 2022
(20220103,'New Year''s Day'), (20220104,'Day after New Year''s Day'),
(20220207,'Waitangi Day'), (20220415,'Good Friday'), (20220418,'Easter Monday'),
(20220425,'ANZAC Day'),
(20220606,'Queen''s Birthday'), (20221024,'Labour Day'), (20221226,'Christmas
Day'), (20221227,'Boxing Day'),
// 2023
(20230102,'New Year''s Day'), (20230103,'Day after New Year''s Day'),
(20230206,'Waitangi Day'), (20230407,'Good Friday'), (20230410,'Easter Monday'),
(20230425,'ANZAC Day'),
(20230605,'Queen''s Birthday'), (20231023,'Labour Day'), (20231225,'Christmas
Day'), (20231226,'Boxing Day'),
// 2024
(20240101,'New Year''s Day'), (20240102,'Day after New Year''s Day'),
(20240206,'Waitangi Day'), (20240329,'Good Friday'), (20240401,'Easter Monday'),
(20240425,'ANZAC Day'),
(20240603,'Queen''s Birthday'), (20241028,'Labour Day'), (20241225,'Christmas
Day'), (20241226,'Boxing Day'),
// 2025
(20250101,'New Year''s Day'), (20250102,'Day after New Year''s Day'),
(20250206,'Waitangi Day'), (20250418,'Good Friday'), (20250421,'Easter Monday'),
(20250425,'ANZAC Day'),
(20250602,'Queen''s Birthday'), (20251027,'Labour Day'), (20251225,'Christmas
Day'), (20251226,'Boxing Day'),
// 2026
(20260101,'New Year''s Day'), (20260102,'Day after New Year''s Day'),
(20260206,'Waitangi Day'), (20260403,'Good Friday'), (20260406,'Easter Monday'),
(20260427,'ANZAC Day'),
(20260601,'Queen''s Birthday'), (20261026,'Labour Day'), (20261225,'Christmas
Day'), (20261228,'Boxing Day'),
// 2027
(20270101,'New Year''s Day'), (20270104,'Day after New Year''s Day'),
(20270208,'Waitangi Day'), (20270326,'Good Friday'), (20270329,'Easter Monday'),
(20270426,'ANZAC Day'),
(20270607,'Queen''s Birthday'), (20271025,'Labour Day'), (20271227,'Christmas
Day'), (20271228,'Boxing Day'),
// 2028
(20280103,'New Year''s Day'), (20280104,'Day after New Year''s Day'),
(20280207,'Waitangi Day'), (20280414,'Good Friday'), (20280417,'Easter Monday'),
(20280425,'ANZAC Day'),
(20280605,'Queen''s Birthday'), (20281023,'Labour Day'), (20281225,'Christmas
Day'), (20281226,'Boxing Day'),
// 2029
(20290101,'New Year''s Day'), (20290102,'Day after New Year''s Day'),
(20290206,'Waitangi Day'), (20290330,'Good Friday'), (20290402,'Easter Monday'),
(20290425,'ANZAC Day'),
(20290604,'Queen''s Birthday'), (20291022,'Labour Day'), (20291225,'Christmas
Day'), (20291226,'Boxing Day'),
// 2030
(20300101,'New Year''s Day'), (20300102,'Day after New Year''s Day'),
(20300206,'Waitangi Day'), (20300419,'Good Friday'), (20300422,'Easter Monday'),
(20300425,'ANZAC Day'),
(20300603,'Queen''s Birthday'), (20301028,'Labour Day'), (20301225,'Christmas
Day'), (20301226,'Boxing Day');

// Testing the data in NZPUBLIC_HOLIDAYS


/*
Select *
from NZPUBLIC_HOLIDAYS
order by 1;
Select Count(*) as Total_count, Description
from NZPUBLIC_HOLIDAYS
GROUP BY Description;
*/
-- 2013-2014 AU ACT holidays
insert into AUPUBLIC_HOLIDAYS(DATE_KEY,Description)
values
// 2013
(20130101,'New Year''s Day'), (20130128,'Australia Day'), (20130311,'Canberra
Day'), (20130329,'Good Friday'), (20130330,'Easter Saturday'), (20130401,'Easter
Monday'), (20130425,'ANZAC Day'),
(20130610,'Queen''s Birthday'), (20130930,'Family & Community Day'),
(20131007,'Labour Day'), (20131225,'Christmas Day'), (20131226,'Boxing Day'),
// 2014
(20140101,'New Year''s Day'), (20140127,'Australia Day'), (20140310,'Canberra
Day'), (20140418,'Good Friday'), (20140419,'Easter Saturday'), (20140421,'Easter
Monday'), (20140425,'ANZAC Day'),
(20140609,'Queen''s Birthday'), (20140929,'Family & Community Day'),
(20141006,'Labour Day'), (20141225,'Christmas Day'), (20141226,'Boxing Day');

INSERT INTO DIM_DATE


( DATE_KEY
,CALENDAR_DATE
,CALENDAR_DATE_STR
,CALENDAR_DATE_ALT
,CALENDAR_YEAR
,CALENDAR_YEAR_DESC
,CALENDAR_QUARTER
,CALENDAR_QUARTER_DESC
,CALENDAR_QUARTER_YEAR
,MONTH_NO_OF_YEAR
,MONTH_YEAR
,MONTH_NAME
,MONTH_YEAR_DESC
,MONTH_YEAR_ALT
,DAY_NO_OF_MONTH
,NO_OF_DAYS_IN_MONTH
,DAY_NO_OF_YEAR
,WEEK_NO_YEAR
,WEEK_YEAR
,ISO_WEEK_NO_OF_YEAR
,ISO_WEEK_YEAR
,WEEK_DAY
,WEEK_DAY_NAME
,NZ_FISCAL_YEAR
,NZ_FISCAL_YEAR_DESC
,NZ_FISCAL_QUARTER
,NZ_FISCAL_QUARTER_YEAR
,NZ_FISCAL_QUARTER_DESC
,NZ_FISCAL_MONTH
,NZ_FISCAL_MONTH_YEAR
,NZ_FISCAL_MONTH_DESC
,AU_FISCAL_YEAR
,AU_FISCAL_YEAR_DESC
,AU_FISCAL_QUARTER
,AU_FISCAL_QUARTER_YEAR
,AU_FISCAL_QUARTER_DESC
,AU_FISCAL_MONTH
,AU_FISCAL_MONTH_YEAR
,AU_FISCAL_MONTH_DESC
,IS_WEEK_DAY_FLAG
,IS_WEEK_DAY_DESC
,IS_NZ_PUBLIC_HOLIDAY_FLAG
,IS_NZ_PUBLIC_HOLIDAY_DESC
,NZ_PUBLIC_HOLIDAY_FULL_DESC
,IS_AU_PUBLIC_HOLIDAY_FLAG
,IS_AU_PUBLIC_HOLIDAY_DESC
,AU_PUBLIC_HOLIDAY_FULL_DESC
,CURRENT_YEAR
,CURRENT_MONTH
,CURRENT_DAY
)

WITH DATE_RANGE AS (
//Generates the date records per number of days required
// note: used row_number to enforce producing gap free result of the sequence
and the dateadd just to make sure the start_date is included in the resultset
select DATEADD(DAY,(row_number() over (order by seq4()) -1),$START_DATE) AS
START_DATE
from table(generator(rowcount => $NUMBER_DAYS))
)
SELECT
TO_CHAR(START_DATE,'YYYYMMDD') AS DATE_KEY
,TO_CHAR(START_DATE,'YYYY-MM-DD') AS
CALENDAR_DATE
,TO_CHAR(START_DATE,'DD-MON-YY') AS
CALENDAR_DATE_STR
,TO_CHAR(START_DATE,'DD/MM/YYYY') AS
CALENDAR_DATE_ALT
,YEAR(START_DATE) AS
CALENDAR_YEAR
,'CY '||YEAR(START_DATE) AS
CALENDAR_YEAR_DESC
,QUARTER(START_DATE) AS
CALENDAR_QUARTER
,'QTR '||QUARTER(START_DATE) AS
CALENDAR_QUARTER_DESC
,YEAR(START_DATE)||QUARTER(START_DATE) AS
CALENDAR_QUARTER_YEAR
,MONTH(START_DATE) AS
MONTH_NO_OF_YEAR
,YEAR(START_DATE)||LPAD(MONTH(START_DATE),2,'0') AS MONTH_YEAR
,TO_CHAR(START_DATE,'MMMM') AS MONTH_NAME
,TO_CHAR(START_DATE,'MON-YY') AS
MONTH_YEAR_DESC
,TO_CHAR(START_DATE,'MON-YY') AS
MONTH_YEAR_ALT
,DAYOFMONTH(START_DATE) AS
DAY_NO_OF_MONTH
,DAYOFMONTH(LAST_DAY(START_DATE,'month')) AS
NO_OF_DAYS_IN_MONTH
,DAYOFYEAR(START_DATE) AS
DAY_NO_OF_YEAR
,WEEKOFYEAR(START_DATE) AS WEEK_NO_YEAR
,YEAR(START_DATE)||LPAD(WEEKOFYEAR(START_DATE),2,'0') AS WEEK_YEAR
,WEEKISO(START_DATE) AS
ISO_WEEK_NO_OF_YEAR
,YEAR(START_DATE)||LPAD(WEEKISO(START_DATE),2,'0') AS
ISO_WEEK_YEAR
,DAYOFWEEK(START_DATE) AS WEEK_DAY
,DECODE(DAYNAME(START_DATE),
'Mon','Monday','Tue','Tuesday',
'Wed','Wednesday','Thu','Thursday',
'Fri','Friday','Sat','Saturday',
'Sun','Sunday') AS
WEEK_DAY_NAME

,YEAR(ADD_MONTHS(DATE_TRUNC('month',START_DATE),9)) AS
NZ_FISCAL_YEAR
,'FY '||YEAR(ADD_MONTHS(DATE_TRUNC('month',START_DATE),9)) AS
NZ_FISCAL_YEAR_DESC
,QUARTER(ADD_MONTHS(DATE_TRUNC('month',START_DATE),9)) AS
NZ_FISCAL_QUARTER
,YEAR(ADD_MONTHS(DATE_TRUNC('month',START_DATE),9))||
QUARTER(ADD_MONTHS(DATE_TRUNC('month',START_DATE),9)) AS
NZ_FISCAL_QUARTER_YEAR
,'QTR '||QUARTER(ADD_MONTHS(DATE_TRUNC('month',START_DATE),9)) AS
NZ_FISCAL_QUARTER_DESC
,MONTH(ADD_MONTHS(DATE_TRUNC('month',START_DATE),9)) AS
NZ_FISCAL_MONTH
,YEAR(ADD_MONTHS(DATE_TRUNC('month',START_DATE),9))||
LPAD(MONTH(ADD_MONTHS(DATE_TRUNC('month',START_DATE),9)),2,'0') AS
NZ_FISCAL_MONTH_YEAR
,'Month '||MONTH(ADD_MONTHS(DATE_TRUNC('month',START_DATE),9)) AS
NZ_FISCAL_MONTH_DESC

,YEAR(ADD_MONTHS(DATE_TRUNC('month',START_DATE),6)) AS
AU_FISCAL_YEAR
,'FY '||YEAR(ADD_MONTHS(DATE_TRUNC('month',START_DATE),6)) AS
AU_FISCAL_YEAR_DESC
,QUARTER(ADD_MONTHS(DATE_TRUNC('month',START_DATE),6)) AS
AU_FISCAL_QUARTER
,YEAR(ADD_MONTHS(DATE_TRUNC('month',START_DATE),6))||
QUARTER(ADD_MONTHS(DATE_TRUNC('month',START_DATE),6)) AS
AU_FISCAL_QUARTER_YEAR
,'QTR '||QUARTER(ADD_MONTHS(DATE_TRUNC('month',START_DATE),6)) AS
AU_FISCAL_QUARTER_DESC
,MONTH(ADD_MONTHS(DATE_TRUNC('month',START_DATE),6)) AS
AU_FISCAL_MONTH
,YEAR(ADD_MONTHS(DATE_TRUNC('month',START_DATE),6))||
LPAD(MONTH(ADD_MONTHS(DATE_TRUNC('month',START_DATE),6)),2,'0') AS
AU_FISCAL_MONTH_YEAR
,'Month '||MONTH(ADD_MONTHS(DATE_TRUNC('month',START_DATE),6)) AS
AU_FISCAL_MONTH_DESC
,IFF(DAYOFWEEK(START_DATE) between 1 and 5,1,0) AS
IS_WEEK_DAY_FLAG
,IFF(DAYOFWEEK(START_DATE) between 1 and 5,'Weekday','Weekend') AS
IS_WEEK_DAY_DESC
,IFF(NZPH.Description is NULL,0,1) AS
IS_NZ_PUBLIC_HOLIDAY_FLAG
,IFF(NZPH.Description is NULL,'Non Holiday','Holiday') AS
IS_NZ_PUBLIC_HOLIDAY_DESC
,IFF(NZPH.Description is NULL,'N/A',NZPH.Description) AS
NZ_PUBLIC_HOLIDAY_FULL_DESC
,IFF(AUPH.Description is NULL,0,1) AS
IS_AU_PUBLIC_HOLIDAY_FLAG
,IFF(AUPH.Description is NULL,'Non Holiday','Holiday') AS
IS_AU_PUBLIC_HOLIDAY_DESC
,IFF(AUPH.Description is NULL,'N/A',AUPH.Description) AS
AU_PUBLIC_HOLIDAY_FULL_DESC
,DATEDIFF('year',CURRENT_DATE(),START_DATE) AS CURRENT_YEAR
,DATEDIFF('month',CURRENT_DATE(),START_DATE) AS
CURRENT_MONTH
,DATEDIFF('day',CURRENT_DATE(),START_DATE) AS CURRENT_DAY

FROM DATE_RANGE DG
LEFT JOIN NZPUBLIC_HOLIDAYS NZPH ON TO_CHAR(START_DATE,'YYYYMMDD')
=NZPH.DATE_KEY
LEFT JOIN AUPUBLIC_HOLIDAYS AUPH ON TO_CHAR(START_DATE,'YYYYMMDD')
=AUPH.DATE_KEY
;
// Testing Holidays
// WHERE 1=1
// AND IFF(NZPH.Description is NULL,0,1)=1
// OR IFF(AUPH.Description is NULL,0,1)=1
// ORDER BY 1;

// Testing the DIM_DATE table


// select * from DIM_DATE where calendar_year = '2020' and NZ_FISCAL_MONTH = 1;
// select * from DIM_DATE where calendar_year = '2020' and AU_FISCAL_MONTH = 1;

You might also like