SQL-запрос для расчета двух сумм в одной строке - PullRequest
2 голосов
/ 17 декабря 2010

возможно, очень простой ответ, но я новичок в T-SQL, так что могу с некоторой помощью помочь!

Мне нужен третий столбец, который вычисляет TotInc - (минус) TotEx, чтобы дать мне TotalDisposableIncome

Вот мой SQL:

- Это дает мне общий доход и общие расходы в одной строке

SELECT
    SUM(CASE WHEN Type = '1' THEN Amount ELSE 0 END) as TotalInc,
    SUM(CASE WHEN Type = '2' THEN Amount ELSE 0 END) as TotEx
    FROM ClaimFinancials

Спасибо!

Ответы [ 4 ]

4 голосов
/ 17 декабря 2010

Вы можете использовать общее табличное выражение (CTE):

WITH T1 AS
(
    SELECT
        SUM(CASE WHEN Type = '1' THEN Amount ELSE 0 END) as TotalInc,
        SUM(CASE WHEN Type = '2' THEN Amount ELSE 0 END) as TotEx
    FROM ClaimFinancials
)
SELECT TotalInc, TotEx, TotalInc - TotEx AS TotalDisposableIncome
FROM T1

или обычный подзапрос:

SELECT TotalInc, TotEx, TotalInc - TotEx AS TotalDisposableIncome
FROM
(
    SELECT
        SUM(CASE WHEN Type = '1' THEN Amount ELSE 0 END) as TotalInc,
        SUM(CASE WHEN Type = '2' THEN Amount ELSE 0 END) as TotEx
    FROM ClaimFinancials
) T1
4 голосов
/ 17 декабря 2010

Вы не можете ссылаться на псевдонимы столбцов в другом месте в вашем предложении SELECT. Вот одна альтернатива.

SELECT TotalInc, TotEx, TotInc - TotEx as TotalDisposable
FROM (
    SELECT
    SUM(CASE WHEN Type = '1' THEN Amount ELSE 0 END) as TotalInc,
    SUM(CASE WHEN Type = '2' THEN Amount ELSE 0 END) as TotEx
    FROM ClaimFinancials
    ) AS Total
0 голосов
/ 17 декабря 2010

Существует более одного способа сделать это.

WITH T1 AS 
( 
  SELECT 
    Type,    
    SUM(Amount as Total 
  FROM ClaimFinancials 
) 
SELECT 
  Inc.Total as TotalInc, 
  Ex.Total as TotEx, 
  Inc.Total - Ex.Total AS TotalDisposableIncome 
FROM T1 Inc, T2 Ex
where T1.Type = 1 and T2.Type = 2
0 голосов
/ 17 декабря 2010
SELECT
  SUM(CASE WHEN Type = '1' THEN Amount ELSE 0 END) as TotalInc, 
  SUM(CASE WHEN Type = '2' THEN Amount ELSE 0 END) as TotEx,
  SUM(CASE 
    WHEN Type = '1' THEN Amount 
    WHEN Type = '2' Then -Amount 
    ELSE 0
  END) AS TotalDisposableIncome
FROM ClaimFinancials
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...