Сумма определенного ряда - PullRequest
0 голосов
/ 17 мая 2018

У меня есть такой запрос

SELECT TotalAmount/(select DateDiff(dd,StartDate, DateAdd(dd, 1,EndDate))) AS TotalAmountForMonth FROM Campaign WHERE StartDate >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) AND StartDate < DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 1)

Этот запрос выполняет поиск кампаний этого месяца и получает ежедневную оплату от TotalAmount в виде строки. Но мне нужно их общее количество.

Вопрос в том, как я могу получить сумму этого запроса?

Edit1: пример таблицы

Total Amount StartDate EndDate 1980 2018-05-01 00:00:00.0000000 2018-05-31 00:00:00.0000000 1271 2018-05-01 00:00:00.0000000 2018-06-01 00:00:00.0000000 2015 2018-05-01 00:00:00.0000000 2018-06-01 00:00:00.0000000 238 2018-05-01 00:00:00.0000000 2018-05-08 00:00:00.0000000 0 2018-05-01 00:00:00.0000000 2018-06-01 00:00:00.0000000

И их результат

63,8709677419355 39,71875 62,96875 29,75 0

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вам нужна агрегатная функция SUM .

Чтобы сохранить код чистым, я бы использовал CTE для инкапсуляции вашего запроса и SUMрезультаты следующие:

;with totalAmountForMonth (
    SELECT TotalAmount/(select DateDiff(dd,StartDate, DateAdd(dd, 1,EndDate)))
     AS TotalAmountForMonth
    FROM Campaign 
    WHERE StartDate >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
      AND StartDate <  DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 1);
)

select 
    sum(TotalAmontForMonth) as SumTotalAmount
from
    totalAmountForMonth;
0 голосов
/ 17 мая 2018

Для этого потребуется SUM агрегатная функция.

Select SUM(TotalAmountForMonth) from (
SELECT TotalAmount/(select DateDiff(dd,StartDate, DateAdd(dd, 1,EndDate)))
 AS TotalAmountForMonth
FROM Campaign 
WHERE StartDate >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
  AND StartDate <  DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 1)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...