СУММА двух строк, возвращаемых подзапросом SQL

Я создал следующий запрос SQL

SELECT ae.[intEntitlementID] 
      ,SUM(decIncrease) - SUM([decDecrease]) as quantity
                ,(SELECT SUM([decCredit]) - SUM([decDebit]) as value
                FROM [tblMonetaryValueEvent]
                where [intEntitlementID] = ae.intEntitlementID
                and intSchemeYear <= @intSchemeYear
                group by intEntitlementID) AS VALUE
    ,(SUM(decIncrease) - SUM([decDecrease])) *
                (SELECT SUM([decCredit]) - SUM([decDebit]) as value
                FROM [tblMonetaryValueEvent]
                where [intEntitlementID] = ae.intEntitlementID
                and intSchemeYear <= @intSchemeYear
                group by intEntitlementID) AS TOTAL



  FROM [tblAllocationEvent] ae

  where ae.intBusinessID = @intBusinessID
  and ae.intSchemeYear <= @intSchemeYear
  group by ae.intEntitlementID

  HAVING SUM(decIncrease) - SUM([decDecrease]) > 0

Что возвращает следующее

СУММА двух строк, возвращаемых подзапросом SQL

Теперь мне нужно найти сумму двух строк в столбце ИТОГО.

Я хочу, чтобы следующие данные были выведены. 73046.908322 + 1150.946103

Есть ли у кого-нибудь советы о том, как СУММИТЬ два результата, возвращаемых подзапросом?

Спасибо

Что означает «Теперь мне нужно добавить две строки в столбец ИТОГО, но у меня возникают проблемы с этим».? У нас нет доступа к вашим данным, и вы не показываете нам желаемый результат.

Larnu 30.05.2019 13:47

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

mkRabbani 30.05.2019 13:53

Извините, желаемый результат теперь добавлен в основной текст и ниже. Мой желаемый результат - это сумма 73046,908322 и 1150,946103.

AlpineF30 30.05.2019 14:15
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
3
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

использовать СВЕРНУТЬ

SELECT i, count(*) as c, sum(i) as s
FROM TEST
WHERE i<5
GROUP BY ROLLUP(i)

дает:

i   c   s
1   1   1
2   1   2
3   1   3
4   1   4
NULL    4   10
Ответ принят как подходящий

как сказал @mkRabbani, вы можете улучшить свой запрос... Я думаю, что следующий может быть - более читаемый - работают лучше (но проверить не могу, т.к. нет данных)

Итак, непроверено!:

WITH sums AS (
  SELECT 
    ae.[intEntitlementID]
    ,SUM(decIncrease)-SUM(decDecrease) AS quantity 
    ,SUM(decCredit)-SUM(decDebit) As value
  FROM [tblAllocationEvent] ae
  INNER JOIN [tblMonetaryValueEvent] ON [intEntitlementID] = ae.intEntitlementID
                                  and intSchemeYear <= ae.intSchemeYear
  where ae.intBusinessID = @intBusinessID
  and ae.intSchemeYear <= @intSchemeYear
  group by ae.intEntitlementID
)
SELECT
  intEntitlementID
  ,quantity
  ,value
  ,quantity * value as Total
FROM sums

Другие вопросы по теме