-- Create or Alter V_DIM_Calendar
CREATE OR ALTER VIEW [silver].[V_DIM_Calendar] AS
SELECT
T1.[CODE_Date] AS code_date
,T1.[CODE_Date] AS pk_code_date
,CONCAT(YEAR(DATEADD(day, 26 - DATEPART(isoww, T1.CODE_Date), T1.CODE_Date)),RIGHT(100+DATEPART(ISO_WEEK,T1.CODE_Date),2)) AS code_iso_week --CODE_ISOWEEK
,'WK ' + RIGHT(100+DATEPART(ISO_WEEK,T1.CODE_Date),2) + '/' + RIGHT(YEAR(DATEADD(day, 26 - DATEPART(isoww, T1.CODE_Date), T1.CODE_Date)),2) AS desc_iso_week --DESC_ISOWEEK
,T1.CODE_Year_Month AS code_year_month
,T1.[CODE_Year] AS code_year
,T2.CODE_FiscalYear AS code_fiscal_year
,T2.CODE2_FiscalYear As code2_fiscal_year
,T1.[CODE_Weekday] AS code_weekday
,T1.[DESC_Weekday] AS desc_weekday
,CASE
WHEN [CODE_Weekday] IN (5,6) THEN 1
ELSE 0
END AS flag_weekend --Flag_Weekend
,CASE
WHEN [CODE_Weekday] IN (0,1,2,3,4) THEN 1
ELSE 0
END AS flag_weekday --Flag_Weekday
,CASE WHEN CONVERT(NVARCHAR, EOMONTH(T1.[CODE_Date]), 112) = T1.[CODE_Date]
THEN 1
ELSE 0
END as flag_end_of_month --FLAG_End_of_Month
,CASE WHEN T1.[CODE_Date] = DATEADD(d,1,EOMONTH(T1.[CODE_Date],-1))
THEN 1
ELSE 0
END as flag_beginning_of_month--FLAG_Beginning_of_Month
FROM bronze.dbo.azure_dim_calendar T1
INNER JOIN (
SELECT
CODE_Date
,CASE
WHEN MONTH(CODE_Date) > 9
THEN YEAR(CODE_Date) + 1
ELSE YEAR(CODE_Date)
END AS CODE_FiscalYear
,CASE
WHEN MONTH(CODE_Date) > 9
THEN CONCAT(RIGHT(YEAR(CODE_Date),2),'-',RIGHT(YEAR(CODE_Date) + 1,2))
ELSE CONCAT(RIGHT(YEAR(CODE_Date)-1,2),'-',RIGHT(YEAR(CODE_Date),2))
END AS CODE2_FiscalYear
,CASE
WHEN MONTH(CODE_Date) > 9
THEN CONCAT('FY ',RIGHT(YEAR(CODE_Date),2),'/',RIGHT(YEAR(CODE_Date) + 1,2))
ELSE CONCAT('FY ',RIGHT(YEAR(CODE_Date)-1,2),'/',RIGHT(YEAR(CODE_Date),2))
END AS DESC_FiscalYear
FROM bronze.dbo.azure_dim_calendar T1
) T2
ON T1.CODE_Date = T2.CODE_Date