Bonjour,

Voici une procédure qui permet de remplir une table DATE avec tous les jours de l'année.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
WITH calendar(date_calendar)
AS
(
	SELECT CAST(cast(year(getdate())+1 AS varchar(4)) + '0101' AS datetime)
	UNION ALL
	SELECT DATEADD(dd,1,date_calendar)
	FROM calendar
	WHERE date_calendar < cast(cast(year(getdate())+1 AS varchar(4)) + '1231' AS datetime)
)
INSERT INTO [DW].[dbo].[Dim_Date]
           ([DATE_TIME]
	,[JOUR]
           ,[MOIS]
           ,[ANNEE])
SELECT 
	date_calendar,
	CAST(DAY(date_calendar) AS VARCHAR(2)),
	CAST(MONTH(date_calendar) AS VARCHAR(2)),
	CAST(YEAR(date_calendar) AS CHAR(4))
FROM calendar
 
OPTION (MAXRECURSION 365)
Si la procédure est lancée plusieurs fois, je dois tester si l'enregistrement existe deja. Je n'arrive à rien, j'ai tester IF EXIST avec select...mais apparement dans le WITH ca ne marche pas.

QQ'un a une idée??

Merci d'avance