USE [BI2_REF] GO /****** Object: StoredProcedure [dbo].[Generate_dim_Datum] Script Date: 03/31/2010 11:34:53 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[Generate_dim_Datum] ( @dStartdate as Datetime, @dEnddate as Datetime ) ------------------------------------------------------------------------------ -- Generate_dim_Datum ------------------------------------------------------------------------------ -- Project: SQL 2005 Datawarehouse Carantegroep -- Versie: 1.0 -- CreatieDatum: 6 oktokber 2009 -- Ontwikkelaar: Ronald Kraijesteijn -- Wijzigingen: -- EXAMPLE: -- TRUNCATE TABLE dim_Datum -- EXEC Generate_dim_Datum '19000101', '20201231' -- -- SELECT * FROM dim_Datum ------------------------------------------------------------------------------ AS BEGIN DECLARE @iDatum_ID int -- [Datum_ID] [int] NOT NULL, DECLARE @vcDatumNaam varchar(64) -- [DatumNaam] [varchar](64) NULL, DECLARE @vcDagNaam varchar(64) -- [DagNaam] [varchar](64) NULL, DECLARE @vcMaandNaam varchar(64) -- [MaandNaam] [varchar](64) NULL, DECLARE @vcMaandCode varchar(4) -- [MaandCode] [varchar](4) NULL, DECLARE @vcKwartaalNaam varchar(64) -- [KwartaalNaam] [varchar](64) NULL, DECLARE @vcKwartaalCode varchar(4) -- [KwartaalCode] [varchar](4) NULL, DECLARE @iDagNummerVanWeek int -- [DagNummerVanWeek] [int] NULL, DECLARE @iDagNummerVanMaand int -- [DagNummerVanMaand] [int] NULL, DECLARE @iDagNummerVanKwartaal int -- [DagNummerVanKwartaal] [int] NULL, DECLARE @iDagNummerVanJaar int -- [DagNummerVanJaar] [int] NULL, DECLARE @iISOWeeknr int -- [WeekNummerVanJaar] [int] NULL, DECLARE @iMaandNummer int -- [MaandNummerVanJaar] [int] NULL, DECLARE @iMaandJaarNummer int DECLARE @iKwartaalNummer int -- [KwartaalNummerVanJaar] [int] NULL, DECLARE @iJaar int -- [Jaar] [int] NULL, DECLARE @iWeekNummer int -- [WeekNummer] [int] NULL, DECLARE @vcWeekNaam varchar(64) -- [WeekNaam] [varchar](64) NULL, DECLARE @iJaarVanWeekNummer int -- [JaarVanWeekNummer] [int] NULL, DECLARE @iIsLaatsteDagVanMaand int -- [IsLaatsteDagVanMaand] [bit] NULL, DECLARE @iIsLaatsteDagVanKwartaal int -- [IsLaatsteDagVanKwartaal] [bit] NULL, DECLARE @iIsLaatsteDagVanJaar int -- [IsLaatsteDagVanJaar] [bit] NULL, DECLARE @iIsWerkDag int -- [IsWerkDag] [bit] NULL, DECLARE @iVerloning int -- [IsVerloningDag] [bit] NULL, DECLARE @iFeestdag int -- [IsFeestDag_NL] [bit] NULL, DECLARE @iPeriode444Nr int -- [Periode444Nummer] [int] NULL, DECLARE @vcPeriode444Naam varchar(64) -- [Periode444Naam] [varchar](64) NULL, DECLARE @iPeriode445Nr int -- [Periode445Nummer] [int] NULL, DECLARE @vcPeriode445Naam varchar(64) -- [Periode445Naam] [varchar](64) NULL, DECLARE @iKwartaal445Nummer int -- [Kwartaal445Nummer] [int] NULL, DECLARE @iKwartaal445Code varchar(4) -- [Kwartaal445Code] [varchar](4) NULL, DECLARE @iDataOK int -- [IsDataCorrectGeladen] [bit] NULL, DECLARE @iIsSelecteerbaar int -- [IsSelecteerbaar] [bit] NULL, -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON ; -- IMPORTANT: changing this value will have impact on -- results of functions and deliver wrong results. SET DATEFIRST 1 -- loop through date range between StartDate and EndDate -- StartDate is shifted upwards with one day after each itteration. WHILE @dStartdate <= @dEnddate BEGIN -- Setting the values of one day -- direct te bepalen variabelen SET @iDatum_ID = ( YEAR(@dStartdate) * 10000 ) + ( MONTH(@dStartdate) * 100 ) + ( DAY(@dStartdate) ) SET @vcDagNaam = DATENAME(weekday, @dStartDate) SET @vcDagNaam = CASE @vcDagNaam WHEN 'Sunday' THEN 'Zondag' WHEN 'Monday' THEN 'Maandag' WHEN 'Tuesday' THEN 'Dinsdag' WHEN 'Wednesday' THEN 'Woensdag' WHEN 'Thursday' THEN 'Donderdag' WHEN 'Friday' THEN 'Vrijdag' WHEN 'Saturday' THEN 'Zaterdag' ELSE @vcDagNaam END SET @iDagNummerVanWeek = DATEPART(dw, @dStartdate) SET @iMaandnummer = DATEPART(M, @dStartdate) SET @vcMaandNaam = DATENAME(Month, @dStartdate) SET @vcMaandNaam = CASE @vcMaandNaam WHEN 'January' THEN 'Januari' WHEN 'February' THEN 'Februari' WHEN 'March' THEN 'Maart' WHEN 'May' THEN 'Mei' WHEN 'June' THEN 'Juni' WHEN 'July' THEN 'Juli' WHEN 'August' THEN 'Augustus' ELSE @vcMaandNaam END SET @iDagNummerVanMaand = DATEPART(DD, @dStartdate) SET @iKwartaalNummer = DATEPART(QQ, @dStartdate) SET @vcKwartaalCode = 'Q' + CAST(@iKwartaalNummer AS varchar(2)) SET @iJaar = DATEPART(YYYY, @dStartdate) SET @iDagNummerVanJaar = DATEPART(dy, @dStartdate) SET @iMaandJaarNummer = (@iJaar * 100) + @iMaandnummer -- variabelen afhankelijk van andere (vorige) variabelen SET @iIsWerkDag = CASE WHEN @iDagNummerVanWeek NOT IN ( 6, 7 ) THEN 1 ELSE 0 END SET @vcDatumNaam = @vcDagNaam + ' ' + CAST(@iDagNummerVanMaand AS VARCHAR(2)) + ' ' + @vcMaandNaam + ' ' + CAST(@iJaar AS VARCHAR(4)) SET @iISOWeeknr = dbo.Get_ISOWeekNo(@dStartdate) SET @vcWeekNaam = 'Week ' + CAST(@iISOWeeknr AS VARCHAR(2)) SET @vcKwartaalNaam = 'Kwartaal ' + CAST(@iKwartaalNummer AS VARCHAR(2)) -- set initiele waarden bij variablen die later gecorriceerd worden. SET @iVerloning = 0 -- Elke dinsdag behalve bij een vrije dag. SET @iPeriode444Nr = 1 --Zie Update SET @iPeriode445Nr = 1 --Zie Update SET @vcPeriode445Naam = 'Dummy' --Zie Update SET @vcMaandCode = 'Dummy' --Zie Update SET @iJaarVanWeekNummer = @iJaar -- Corrected later... SET @iFeestdag = 0 --DagNummerVanKwartaal SET @iDagNummerVanKwartaal = CASE WHEN @iMaandnummer BETWEEN 1 AND 3 THEN DATEDIFF(dd, CAST(@iJaar AS VARCHAR(4)) + '0101', @dStartdate) + 1 WHEN @iMaandnummer BETWEEN 4 AND 6 THEN DATEDIFF(dd, CAST(@iJaar AS VARCHAR(4)) + '0401', @dStartdate) + 1 WHEN @iMaandnummer BETWEEN 7 AND 9 THEN DATEDIFF(dd, CAST(@iJaar AS VARCHAR(4)) + '0701', @dStartdate) + 1 WHEN @iMaandnummer BETWEEN 10 AND 12 THEN DATEDIFF(dd, CAST(@iJaar AS VARCHAR(4)) + '1001', @dStartdate) + 1 END -- JaarVanWeekNummer -- De laatste dagen van een jaar kunnen in week vallen van volgend jaar. -- Neem het volgende jaar als weeknr=1 en maandnr=12. IF ( @iISOWeeknr = 1 ) AND ( @iMaandnummer = 12 ) SET @iJaarVanWeekNummer = @iJaarVanWeekNummer + 1 IF ( @iISOWeeknr > 50 ) AND ( @iMaandnummer = 1 ) SET @iJaarVanWeekNummer = @iJaarVanWeekNummer - 1 --Weeknummer (incl. JaarNummer) SET @iWeekNummer = ( @iJaarVanWeekNummer * 100 ) + @iISOWeeknr --IsLaatsteDagVanMaand IF DATEPART(DD, @dStartdate + 1) = 1 SET @iIsLaatsteDagVanMaand = 1 ELSE SET @iIsLaatsteDagVanMaand = 0 --IsLaatsteDagVanKwartaal IF ( @iIsLaatsteDagVanMaand = 1 ) AND ( @iMaandnummer IN ( 3, 6, 9, 12 ) ) SET @iIsLaatsteDagVanKwartaal = 1 ELSE SET @iIsLaatsteDagVanKwartaal = 0 --IsLaatsteDagVanJaar IF ( @iIsLaatsteDagVanKwartaal = 1 ) AND ( @iMaandnummer = 12 ) SET @iIsLaatsteDagVanJaar = 1 ELSE SET @iIsLaatsteDagVanJaar = 0 -- Kwartaal445Nummer IF @iISOWeeknr BETWEEN 1 AND 13 SET @iKwartaal445Nummer = 1 ELSE IF @iISOWeeknr BETWEEN 14 AND 26 SET @iKwartaal445Nummer = 2 ELSE IF @iISOWeeknr BETWEEN 27 AND 39 SET @iKwartaal445Nummer = 3 ELSE IF @iISOWeeknr BETWEEN 40 AND 53 SET @iKwartaal445Nummer = 4 ELSE SET @iKwartaal445Nummer = 0 --Kwartaal445Code SET @iKwartaal445Code = 'Q' + CAST(@iKwartaal445Nummer AS varchar(2)) --Inserting the values INSERT INTO dim_Datum ( Datum_ID, DatumWaarde, DatumNaam, DagNaam, MaandNaam, KwartaalNaam, KwartaalCode, DagNummerVanWeek, DagNummerVanMaand, DagNummerVanKwartaal, DagNummerVanJaar, WeekNummerVanJaar, MaandNummerVanJaar, MaandJaarNummer, KwartaalNummerVanJaar, Jaar, WeekNummer, WeekNaam, JaarVanWeekNummer, IsLaatsteDagVanMaand, IsLaatsteDagVanKwartaal, IsLaatsteDagVanJaar, IsWerkDag, IsVerloningDag, IsFeestDag_NL, Periode444Nummer, Periode445Nummer, Periode445Naam, Kwartaal445Nummer, Kwartaal445Code, IsSelecteerbaar ) VALUES ( @iDatum_ID, @dStartdate, @vcDatumNaam, @vcDagNaam, @vcMaandNaam, @vcKwartaalNaam, @vcKwartaalCode, @iDagNummerVanWeek, @iDagNummerVanMaand, @iDagNummerVanKwartaal, @iDagNummerVanJaar, @iISOWeeknr, @iMaandNummer, @iMaandJaarNummer, @iKwartaalNummer, @iJaar, @iWeekNummer, @vcWeekNaam, @iJaarVanWeekNummer, @iIsLaatsteDagVanMaand, @iIsLaatsteDagVanKwartaal, @iIsLaatsteDagVanJaar, @iIsWerkDag, @iVerloning, @iFeestdag, @iPeriode444Nr, @iPeriode445Nr, @vcPeriode445Naam, @iKwartaal445Nummer, @iKwartaal445Code, 0 ) SET @dStartdate = @dStartdate + 1 END UPDATE D SET --------------------------------------------------------------------------------- --Omzetten van dagen in het Engels naar het Nederlands!!!!!! --------------------------------------------------------------------------------- MaandNaam = CASE MaandNaam WHEN 'January' THEN 'Januari' WHEN 'February' THEN 'Februari' WHEN 'March' THEN 'Maart' WHEN 'May' THEN 'Mei' WHEN 'June' THEN 'Juni' WHEN 'July' THEN 'Juli' WHEN 'August' THEN 'Augustus' ELSE MaandNaam END, DagNaam = CASE DagNaam WHEN 'Sunday' THEN 'Zondag' WHEN 'Monday' THEN 'Maandag' WHEN 'Tuesday' THEN 'Dinsdag' WHEN 'Wednesday' THEN 'Woensdag' WHEN 'Thursday' THEN 'Donderdag' WHEN 'Friday' THEN 'Vrijdag' WHEN 'Saturday' THEN 'Zaterdag' ELSE DagNaam END, MaandCode = CASE MaandNummerVanJaar WHEN 1 THEN 'Jan' WHEN 2 THEN 'Feb' WHEN 3 THEN 'Mrt' WHEN 4 THEN 'Apl' WHEN 5 THEN 'Mei' WHEN 6 THEN 'Jun' WHEN 7 THEN 'Jul' WHEN 8 THEN 'Aug' WHEN 9 THEN 'Spt' WHEN 10 THEN 'Okt' WHEN 11 THEN 'Nov' WHEN 12 THEN 'Dec' ELSE '' END, --------------------------------------------------------------------------------- -- periode444 en periode445 --------------------------------------------------------------------------------- Periode444Nummer = CASE WHEN WeekNummerVanJaar BETWEEN 1 AND 4 THEN 1 WHEN WeekNummerVanJaar BETWEEN 5 AND 8 THEN 2 WHEN WeekNummerVanJaar BETWEEN 9 AND 12 THEN 3 WHEN WeekNummerVanJaar BETWEEN 13 AND 16 THEN 4 WHEN WeekNummerVanJaar BETWEEN 17 AND 20 THEN 5 WHEN WeekNummerVanJaar BETWEEN 21 AND 24 THEN 6 WHEN WeekNummerVanJaar BETWEEN 25 AND 28 THEN 7 WHEN WeekNummerVanJaar BETWEEN 29 AND 32 THEN 8 WHEN WeekNummerVanJaar BETWEEN 33 AND 36 THEN 9 WHEN WeekNummerVanJaar BETWEEN 37 AND 40 THEN 10 WHEN WeekNummerVanJaar BETWEEN 41 AND 44 THEN 11 WHEN WeekNummerVanJaar BETWEEN 45 AND 48 THEN 12 WHEN WeekNummerVanJaar BETWEEN 49 AND 53 THEN 13 END, Periode444Naam = CASE WHEN WeekNummerVanJaar BETWEEN 1 AND 4 THEN 'Week 01 t/m 04' WHEN WeekNummerVanJaar BETWEEN 5 AND 8 THEN 'Week 05 t/m 08' WHEN WeekNummerVanJaar BETWEEN 9 AND 12 THEN 'Week 09 t/m 12' WHEN WeekNummerVanJaar BETWEEN 13 AND 16 THEN 'Week 13 t/m 16' WHEN WeekNummerVanJaar BETWEEN 17 AND 20 THEN 'Week 17 t/m 20' WHEN WeekNummerVanJaar BETWEEN 21 AND 24 THEN 'Week 21 t/m 24' WHEN WeekNummerVanJaar BETWEEN 25 AND 28 THEN 'Week 25 t/m 28' WHEN WeekNummerVanJaar BETWEEN 29 AND 32 THEN 'Week 29 t/m 32' WHEN WeekNummerVanJaar BETWEEN 33 AND 36 THEN 'Week 33 t/m 36' WHEN WeekNummerVanJaar BETWEEN 37 AND 40 THEN 'Week 37 t/m 40' WHEN WeekNummerVanJaar BETWEEN 41 AND 44 THEN 'Week 41 t/m 44' WHEN WeekNummerVanJaar BETWEEN 45 AND 48 THEN 'Week 45 t/m 48' WHEN WeekNummerVanJaar BETWEEN 49 AND 53 THEN 'Week 49 t/m 52' END, Periode445Nummer = CASE WHEN WeekNummerVanJaar BETWEEN 1 AND 4 THEN 1 -- 4 weeks WHEN WeekNummerVanJaar BETWEEN 5 AND 8 THEN 2 -- 4 weeks WHEN WeekNummerVanJaar BETWEEN 9 AND 13 THEN 3 -- 5 weeks WHEN WeekNummerVanJaar BETWEEN 14 AND 17 THEN 4 -- 4 weeks WHEN WeekNummerVanJaar BETWEEN 18 AND 21 THEN 5 -- 4 weeks WHEN WeekNummerVanJaar BETWEEN 22 AND 26 THEN 6 -- 5 weeks WHEN WeekNummerVanJaar BETWEEN 27 AND 30 THEN 7 -- 4 weeks WHEN WeekNummerVanJaar BETWEEN 31 AND 34 THEN 8 -- 4 weeks WHEN WeekNummerVanJaar BETWEEN 35 AND 39 THEN 9 -- 5 weeks WHEN WeekNummerVanJaar BETWEEN 40 AND 43 THEN 10 -- 4 weeks WHEN WeekNummerVanJaar BETWEEN 44 AND 47 THEN 11 -- 4 weeks WHEN WeekNummerVanJaar BETWEEN 48 AND 53 THEN 12 -- 5 weeks, potentially 6 weeks if year contains 53 weeks. END, Periode445Naam = CASE WHEN WeekNummerVanJaar BETWEEN 1 AND 4 THEN 'Januari' WHEN WeekNummerVanJaar BETWEEN 5 AND 8 THEN 'Februari' WHEN WeekNummerVanJaar BETWEEN 9 AND 13 THEN 'Maart' WHEN WeekNummerVanJaar BETWEEN 14 AND 17 THEN 'April' WHEN WeekNummerVanJaar BETWEEN 18 AND 21 THEN 'Mei' WHEN WeekNummerVanJaar BETWEEN 22 AND 26 THEN 'Juni' WHEN WeekNummerVanJaar BETWEEN 27 AND 30 THEN 'Juli' WHEN WeekNummerVanJaar BETWEEN 31 AND 34 THEN 'Augustus' WHEN WeekNummerVanJaar BETWEEN 35 AND 39 THEN 'September' WHEN WeekNummerVanJaar BETWEEN 40 AND 43 THEN 'Oktober' WHEN WeekNummerVanJaar BETWEEN 44 AND 47 THEN 'November' WHEN WeekNummerVanJaar BETWEEN 48 AND 53 THEN 'December' END FROM dim_Datum AS D --------------------------------------------------------------------------------- -- Feestdagen -- Nieuwjaarsdag --------------------------------------------------------------------------------- UPDATE dim_Datum SET IsFeestDag_NL = 1, FeestdagOmschrijving = 'Nieuwjaarsdag' WHERE MaandNummerVanJaar = 1 AND DagNummerVanMaand = 1 --Goeie Vrijdag UPDATE dim_Datum SET IsFeestDag_NL = 1, FeestdagOmschrijving = 'Goede Vrijdag' WHERE DatumWaarde = ( dbo.Get_EasterSunday(Jaar) - 2 ) --Paas Zondag UPDATE dim_Datum SET IsFeestDag_NL = 1, FeestdagOmschrijving = 'Eerste Paasdag' WHERE DatumWaarde = ( dbo.Get_EasterSunday(Jaar) ) --Paas Maandag UPDATE dim_Datum SET IsFeestDag_NL = 1, FeestdagOmschrijving = 'Tweede Paasdag' WHERE DatumWaarde = ( dbo.Get_EasterSunday(Jaar) + 1 ) --Koninginnedag UPDATE dim_Datum SET IsFeestDag_NL = 1, FeestdagOmschrijving = 'Koninginnedag' WHERE MaandNummerVanJaar = 4 AND DagNummerVanMaand = 30 --Hemelvaart UPDATE dim_Datum SET IsFeestDag_NL = 1, FeestdagOmschrijving = 'Hemelvaartdag' WHERE DatumWaarde = ( dbo.Get_EasterSunday(Jaar) + 39 ) --Bevrijdingsdag UPDATE dim_Datum SET IsFeestDag_NL = 1, FeestdagOmschrijving = 'Bevrijdingsdag' WHERE MaandNummerVanJaar = 5 AND DagNummerVanMaand = 5 --1de pinkster dag UPDATE dim_Datum SET IsFeestDag_NL = 1, FeestdagOmschrijving = 'Eerste Pinksterdag' WHERE DatumWaarde = ( dbo.Get_EasterSunday(Jaar) + 49 ) --2de pinkster dag UPDATE dim_Datum SET IsFeestDag_NL = 1, FeestdagOmschrijving = 'Tweede Pinksterdag' WHERE DatumWaarde = ( dbo.Get_EasterSunday(Jaar) + 50 ) --1de Kerst UPDATE dim_Datum SET IsFeestDag_NL = 1, FeestdagOmschrijving = 'Eerste Kerstdag' WHERE MaandNummerVanJaar = 12 AND DagNummerVanMaand = 25 ; --2de Kerst UPDATE dim_Datum SET IsFeestDag_NL = 1, FeestdagOmschrijving = 'Tweede Kerstdag' WHERE MaandNummerVanJaar = 12 AND DagNummerVanMaand = 26 ; --------------------------------------------------------------------------------- -- Bepaal het aantal werkdagen in: -- Week, Maand, Kwartaal, Periode444, Periode445 en Jaar --------------------------------------------------------------------------------- UPDATE D SET D.AantalWerkdagenInWeek = ISNULL(WD.AantalWerkdagenInWeek, 0) FROM dim_Datum AS D LEFT OUTER JOIN -- WD: WerkDagen ( SELECT WeekNummer, COUNT(*) AS AantalWerkdagenInWeek FROM dim_Datum WHERE ( IsWerkDag = 1 ) AND ( IsFeestDag_NL = 0 ) GROUP BY WeekNummer ) AS WD ON ( D.WeekNummer = WD.WeekNummer ) ; -- AantalWerkdagenInMaand UPDATE D SET D.AantalWerkdagenInMaand = ISNULL(WD.AantalWerkdagenInMaand, 0) FROM dim_Datum AS D LEFT OUTER JOIN -- WD: WerkDagen ( SELECT Jaar, MaandNummerVanJaar, COUNT(*) AS AantalWerkdagenInMaand FROM dim_Datum WHERE ( IsWerkDag = 1 ) AND ( IsFeestDag_NL = 0 ) GROUP BY Jaar, MaandNummerVanJaar ) AS WD ON ( D.Jaar = WD.Jaar ) AND ( D.MaandNummerVanJaar = WD.MaandNummerVanJaar ) ; -- AantalWerkdagenInPeriode444 UPDATE D SET D.AantalWerkdagenInPeriode444 = ISNULL(WD.AantalWerkdagenInPeriode444, 0) FROM dim_Datum AS D LEFT OUTER JOIN -- WD: WerkDagen ( SELECT Jaar, Periode444Nummer, COUNT(*) AS AantalWerkdagenInPeriode444 FROM dim_Datum WHERE ( IsWerkDag = 1 ) AND ( IsFeestDag_NL = 0 ) GROUP BY Jaar, Periode444Nummer ) AS WD ON ( D.Jaar = WD.Jaar ) AND ( D.Periode444Nummer = WD.Periode444Nummer ) ; -- AantalWerkdagenInPeriode445 UPDATE D SET D.AantalWerkdagenInPeriode445 = ISNULL(WD.AantalWerkdagenInPeriode445, 0) FROM dim_Datum AS D LEFT OUTER JOIN -- WD: WerkDagen ( SELECT Jaar, Periode445Nummer, COUNT(*) AS AantalWerkdagenInPeriode445 FROM dim_Datum WHERE ( IsWerkDag = 1 ) AND ( IsFeestDag_NL = 0 ) GROUP BY Jaar, Periode445Nummer ) AS WD ON ( D.Jaar = WD.Jaar ) AND ( D.Periode445Nummer = WD.Periode445Nummer ) ; -- AantalWerkdagenInKwartaal UPDATE D SET D.AantalWerkdagenInKwartaal = ISNULL(WD.AantalWerkdagenInKwartaal, 0) FROM dim_Datum AS D LEFT OUTER JOIN -- WD: WerkDagen ( SELECT Jaar, KwartaalNummerVanJaar, COUNT(*) AS AantalWerkdagenInKwartaal FROM dim_Datum WHERE ( IsWerkDag = 1 ) AND ( IsFeestDag_NL = 0 ) GROUP BY Jaar, KwartaalNummerVanJaar ) AS WD ON ( D.Jaar = WD.Jaar ) AND ( D.KwartaalNummerVanJaar = WD.KwartaalNummerVanJaar ) ; -- AantalWerkdagenInJaar UPDATE D SET D.AantalWerkdagenInJaar = ISNULL(WD.AantalWerkdagenInJaar, 0) FROM dim_Datum AS D LEFT OUTER JOIN -- WD: WerkDagen ( SELECT Jaar, COUNT(*) AS AantalWerkdagenInJaar FROM dim_Datum WHERE ( IsWerkDag = 1 ) AND ( IsFeestDag_NL = 0 ) GROUP BY Jaar ) AS WD ON ( D.Jaar = WD.Jaar ) ; --------------------------------------------------------------------------------- -- Verloning -- Per stichting verschillende dus wordt nog niet gebruikt --------------------------------------------------------------------------------- -- UPDATE A -- SET IsVerloningDag = 1 -- FROM dim_Datum A -- WHERE A.DagNummerVanWeek = 2 -- Update veld IsSelecteerbaar, om aan te geven welke dagen wel of niet -- zijn te selecteren in de interfaces. UPDATE dbo.dim_Datum SET IsSelecteerbaar = 1 -- Niet-feestdagen op FALSE zetten! UPDATE dbo.dim_Datum SET IsFeestDag_NL = 0 WHERE IsFeestDag_NL <> 1 UPDATE dbo.dim_Datum SET FeestdagOmschrijving = '' WHERE FeestdagOmschrijving IS NULL ------------------------ -- THE END -- END