Bonjour à tous,
Je travaille sur un projet nécessitant des extractions multiples, et au sein d'un même jeu de résultat je peux avoir des périodes de références différentes pour une colonne donnée.
Dans les grandes lignes, je voulais utiliser des variables... dans une vue
Après lecture du forum , j'ai du me résoudre à utiliser une table de paramètres pour entrer une date de référence, et via DATEADD je calcule les dates relatives à mes traitements. Pas de souci de ce côté-là, mais la lecture est devenue un poil rébarbative, car au sein des vues de bases il y de nombreux UNION ALL pour gérer ces conditions variant en fonction de la donnée récupérée, et donc autant de WHERE.
Au-delà de la cosmétique, je me demande si la création de fonctions peut-être (ou non) un plus. Dans le cadre de ce projet mon seul besoin est de passer des dates à de nombreuses clauses WHERE, mais si votre vision est plus large ça m’intéresse aussi bien sûr
Merci de vos conseils et lumières.
Ci-après quelques exemples, j'aimerai remplacer les - longs - DATEADD par des noms conviviaux. J'aimerai notamment avoir des précisions sur les implications en termes de performance. (+/- 1 millions de lignes).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 DECLARE @Annee INT, @DateDuJour DATETIME, @DateDebN1 DATETIME, @DateFinN1 DATETIME, @DateDebCPN DATETIME, @DateFinCPN DATETIME, @DateDebMoisM1 DATETIME, @DateFinMoisM1 DATETIME SET @DateDuJour = GETDATE() SET @DateDebN1 = DATEADD(yy, YEAR(GETDATE()) - 2001, '20000101') SET @DateFinN1 = DATEADD(yy, YEAR(GETDATE()) - 2001, '20001231') SET @DateDebCPN = DATEADD(yy, YEAR(GETDATE()) - 2000, '20000601') SET @DateFinCPN = DATEADD(yy, YEAR(GETDATE()) - 2000, '20010531') SET @DateDebMoisM1 = DATEADD(mm, MONTH(GETDATE()) - 2, DATEADD(yy, YEAR(GETDATE()) - 2000, '20000101')) SET @DateFinMoisM1 = DATEADD(dd, -1, DATEADD(mm, MONTH(GETDATE()) - 1, DATEADD(yy, YEAR(GETDATE()) - 2000, '20000101'))) SELECT @DateDuJour AS DateDuJour, @DateDebN1 AS DateDebN1, @DateFinN1 AS DateFinN1, @DateDebCPN AS DateDebCPN, @DateFinCPN AS DateFinCPN, @DateDebMoisM1 AS DateDebMoisM1, @DateFinMoisM1 AS DateFinMoisM1
Partager