построить сумму результатов нескольких подзапросов - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь составить сумму результатов из нескольких подзапросов.У меня есть многочисленные периоды, определенные двумя переменными:

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'

Затем я вычисляю дни между этими двумя датами, но в конечном итоге я хотел бы сложить их и получить итоговое значение:

select  datediff(day, @left1, @return1 )

select  datediff(day, @left2, @return2 )

select  datediff(day, @left3, @return3 )

Я думал о CTE, но это не сработало.Как правильно это сделать?

Ответы [ 4 ]

0 голосов
/ 23 января 2019
select  
   datediff(day, @left1, @return1 ) + 
   datediff(day, @left2, @return2 ) + 
   datediff(day, @left3, @return3 )
0 голосов
/ 23 января 2019
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
0 голосов
/ 23 января 2019

Привет, думаю, этот запрос может помочь вам:

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
0 голосов
/ 23 января 2019

Уверен, что вам просто нужно базовое дополнение.

select datediff(day, @left1, @return1 )
     + datediff(day, @left2, @return2 )
     + datediff(day, @left3, @return3 )
...