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
| WITH RecupId AS (SELECT MAX(dateAjout) AS lastDate, idAdresseTravaux AS id, numeroContrat AS numContrat
FROM PrestationContrat
WHERE idAgence = 31
GROUP BY idAdresseTravaux, numeroContrat
UNION
SELECT MAX(dateModification) AS lastDate, idAdresseTravaux AS id, numeroContrat AS numContrat
FROM PrestationContrat
WHERE idAgence = 31
GROUP BY idAdresseTravaux, numeroContrat
UNION
SELECT MAX(dateAjout) AS lastDate, idAdresse AS id, numeroContrat AS numContrat
FROM Adresse
WHERE idAgence = 31
GROUP BY idAdresse, numeroContrat
UNION
SELECT MAX(dateModification) AS lastDate, idAdresse AS id, numeroContrat AS numContrat
FROM Adresse
WHERE idAgence = 31
GROUP BY idAdresse, numeroContrat)
SELECT c.idAgence, c.numeroContrat
, CASE c.typeContrat WHEN 0 THEN RTRIM(c.numeroContrat) + ' - F' ELSE RTRIM(c.numeroContrat) + ' - P' END AS numeroContratFormat ,
c.referenceClient,
cv.estValide,
c.codeClient, c.nomClient, c.objContrat, c.dateDebut, c.montantHTGlobal, c.estSuspension, c.estTaciteReconduction, c.dateFin,
dbo.[GetEventContrat] (c.idAgence, c.numeroContrat) AS typeEvent,
c.idAgenceClient,
c.idAdresseTravaux,
(at.adresse0 + ISNULL(at.adresse1,' ') + ISNULL(at.adresse2,'')) AS adresseT ,
cpt.codePostal AS 'cpT',
cpt.ville AS 'villeT'
FROM Adresse at
INNER JOIN (SELECT id
FROM RecupId AS ri
WHERE lastDate = (SELECT MAX(lastDate) FROM RecupId WHERE ri.numContrat = numContrat)) T2
ON T2.id = at.idAdresse
AND at.estAdresseTravaux = 1
AND at.idAgence = 31
INNER JOIN CodePostalVille AS cpt
ON at.idAgenceCodePostalVille = cpt.idAgence
AND cpt.idCodePostalVille = at.idCodePostalVille
INNER JOIN Contrat c
ON c.numeroContrat = at.numeroContrat
AND c.idAgence = at.idAgence
LEFT JOIN ContratValide cv
ON cv.idAgence = c.idAGence
AND cv.numeroContrat = c.numeroContrat
WHERE estResilie = 0
ORDER BY c.numeroContrat DESC |
Partager