0

J'ai quelques anciens modèles Excel que j'essaie de reproduire, la façon dont ils sont configurés n'est pas idéale mais je les utilise comme exercice.Récupérer et concaténer des semaines de dates historiques

Dans les tableaux Excel il y a une colonne qui ressemble à ceci:

|--Week and dates--| 
|------------------| 
|Week 291214_040115| 
|Week 050115_110115| 
|Week 120115_180115| 
|...etc............| 
|...etc............| 
|...etc............| 
|...etc............| 
|Week 030717_090717| 
|Week 100717_160717| 

Avec le code ci-dessous j'ai essayé de recréer ce qui précède mais j'ai rencontré plusieurs problèmes.

Declare @sDate date, 
     @eDate date; 

Select @sDate = '2015-01-01', 
     @eDate = '2017-07-31'; 

;with cte as 
(
select @sDate StartDate, 
DATEADD(wk, DATEDIFF(wk, 0, @sDate), 6) EndDate 

union all 

select dateadd(ww, 1, StartDate), 
dateadd(ww, 1, EndDate) 

from cte 
where dateadd(ww, 1, StartDate)<= @eDate 
) 

select concat(StartDate,'_',EndDate) as date 

from cte 
OPTION (MAXRECURSION 0) 

La sortie ce produit est:

|------------Dates-------------| 
|2015-01-01_Jan 4 2015 12:00AM| 
|2015-01-08_Jan 11 2015 12:00AM| 
|2015-01-15_Jan 18 2015 12:00AM| 
|2015-01-22_Jan 25 2015 12:00AM| 
|2015-01-29_Feb 1 2015 12:00AM| 
|2015-02-05_Feb 8 2015 12:00AM| 

Je n'ai pas concaténer la chaîne « semaine » encore dans le script, mais fondamentalement comment j'obtenir le script à regarder de plus comme le modèle Excel table et moins comme ma propre version.

Répondre

0

Vous pouvez modifier votre sélection comme ci-dessous:

select concat('Week ',Format(StartDate, 'ddMMyy'),'_',Format(dateadd(day,6,StartDate),'ddMMyy')) as date 
    from cte