J'essaye de construire une somme des résultats de plusieurs sous-requêtes. J'ai de nombreuses périodes définies avec deux variables:
select datediff(day, @left1, @return1 ) select datediff(day, @left2, @return2 ) select datediff(day, @left3, @return3 )
Ensuite, je calcule les jours entre ces deux dates mais j'aimerais finalement les additionner et obtenir un total:
declare @left1 date = '2014-06-25', @return1 date ='2014-08-21', @left2 date = '2014-10-29', @return2 date = '2015-03-15', @left3 date = '2015-04-21', @return3 date = '2015-09-19'
J'ai pensé aux CTE mais ça n'a pas marché. Quelle est la bonne façon de procéder?
4 Réponses :
À peu près sûr, vous avez juste besoin d'un ajout de base.
select datediff(day, @left1, @return1 ) + datediff(day, @left2, @return2 ) + datediff(day, @left3, @return3 )
SELECT SUM(DATEDIFF(DAY,[LEFT],[Return])) AS TOTALDAYS FROM ( select @left1 AS [Left],@return1 AS [Return] UNION ALL select @left2 AS [Left],@return2 AS [Return] UNION ALL select @left3 AS [Left],@return3 AS [Return] ) X
Votre raccourci n'était pas faux, mais vous aimerez peut-être ce blog . '
Cette requête peut vous aider:
Select sum(NbDay) as totaldiffday From ( select datediff(day, @left1, @return1 ) As NbDay Union select datediff(day, @left2, @return2 ) As NbDay Union select datediff(day, @left3, @return3 ) As NbDay ) as SubQuery
select datediff(day, @left1, @return1 ) + datediff(day, @left2, @return2 ) + datediff(day, @left3, @return3 )