1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
WITH Projet (id, dte, statut) AS (
select 'P3', cast('20161002' AS date), 'analyse'
union all select 'P1', '20170504', 'analyse'
union all select 'P1', '20170505', 'developpement'
union all select 'P2', '20170625', 'analyse'
union all select 'P1', '20170710', 'test'
),
cal(jour) AS (
SELECT cast('20161001' AS date) AS jour
UNION ALL
SELECT dateadd(week, 1, jour)
FROM cal
WHERE jour <= '20170710'
), tmp AS (
SELECT YEAR(jour) AS annee, datepart(week, jour) AS semaine, statut,id, ROW_NUMBER() OVER(PARTITION BY jour, id ORDER BY dte DESC) AS Rn
FROM cal
LEFT JOIN projet
ON projet.dte <= cal.jour
)
SELECT annee, semaine, statut, COUNT(id) AS NbProjet
FROM Tmp
WHERE Rn = 1
GROUP BY annee, semaine, statut
ORDER BY annee, semaine, statut |
Partager