SQL Query在同一行上计算两个Amount

时间:2010-12-16 23:19:55

标签: sql sql-server tsql

可能是一个非常简单的答案,但我是T-SQL的新手,所以可以提供一些帮助!

我需要一个能够解决TotInc的第3列 - (减去)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 个答案:

答案 0 :(得分:4)

您无法在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

答案 1 :(得分:4)

您可以使用公用表表达式(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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

有多种方法可以做到。

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
相关问题