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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| WITH tabPrin (rlinumser, rlidatfinval , ufocod, ufolib)
AS (SELECT rli.rlinumser, rlidatfinval , ufocod,ufolib
FROM stufo as ufo
JOIN stlit lit
ON ufo.ufonumser = lit.ufonumser
LEFT OUTER JOIN parli rli
ON lit.litnumser = rli.litnumser
AND rlidatdebval <= '20081231'
AND (rlidatfinval IS NULL OR rlidatfinval >= '20080101')
WHERE ufocod BETWEEN 0 AND 99999
AND litdis = 'O'
),
G1 (ufocod, ufolib, NBJourInocc)
AS (SELECT ufocod, ufolib, COUNT(*)
FROM parli rli INNER JOIN TabPrin prin ON rli.rlinumser = prin.rlinumser
AND rli.rlidatdebval <= '20080101'
GROUP BY ufocod, ufolib),
G2 (ufocod, ufolib, NBJourInocc2)
AS (SELECT ufocod, ufolib, COUNT(*)
FROM parli rli INNER JOIN TabPrin prin ON rli.rlinumser = prin.rlinumser
GROUP BY ufocod, ufolib),
G3 (ufocod, ufolib, NBJourInocc3)
AS (SELECT ufocod, ufolib, COUNT(*)
FROM parli rli INNER JOIN TabPrin prin ON rli.rlinumser = prin.rlinumser
AND (rli.rlidatfinval IS NULL OR rli.rlidatfinval >= '20080101')
GROUP BY ufocod, ufolib)
SELECT tabprin.ufocod, tabprin.ufolib ,NBJourInocc,NBJourInocc2,NBJourInocc3,
'Jour innoccupé' =
sum(case when COALESCE(NBJourInocc,0) = 0
then case when COALESCE(NBJourInocc2,0) = 0
then (DATEDIFF(dd, '01/01/2008', '31/12/2008')+1)
end
end
+
case when COALESCE(NBJourInocc3,0) = 0
then case when COALESCE(NBJourInocc2,0) = 0
then 0
end
when COALESCE(NBJourInocc3,0) = (DATEDIFF(dd,rlidatfinval,'31/12/2008') + 1) then 0
end)
FROM Tabprin LEFT OUTER JOIN G1 ON Tabprin.ufocod = G1.ufocod
LEFT OUTER JOIN G2 ON Tabprin.ufocod = G2.ufocod
LEFT OUTER JOIN G3 ON Tabprin.ufocod = G3.ufocod
group by tabprin.ufocod, tabprin.ufolib,NBJourInocc,NBJourInocc2,NBJourInocc3 |
Partager