Сумма двух строк, возвращаемых подзапросом SQL - PullRequest
0 голосов
/ 30 мая 2019

Я создал следующий запрос 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

, который возвращает следующее

enter image description here

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

Я хочу, чтобы были выведены следующие данные. 73046,908322 + 1150,946103

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

Спасибо

Ответы [ 2 ]

1 голос
/ 30 мая 2019

как сказал @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
1 голос
/ 30 мая 2019

использование ROLLUP

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
...