某些列的SQL行总和

ste*_*ris 1 sql t-sql sql-server sum

我正在尝试开发一个SQL字段,它是除前两个行之外的所有列的总和.下面是我的代码,它返回MonthYear,Total,Sum1,Sum2和Sum3列.我想要一个总和为Sum1,Sum2和Sum3的FinalSum.这用于反击检查总列的准确性.有没有办法做到这一点?运行Microsoft SQL Server 2005 - T-SQL

SELECT MonthYear,
            COUNT(*) AS Total,
            ISNULL(
                SUM(
                    CASE 
                    WHEN Status='Sum1'                  THEN 1
                    ELSE 0
                    END
                )
            ,0) AS [Sum1],
ISNULL(
                SUM(
                    CASE 
                    WHEN Status='Sum2'                  THEN 1
                    ELSE 0
                    END
                )
            ,0) AS [Sum2],
ISNULL(
                SUM(
                    CASE 
                    WHEN Status='Sum3'                  THEN 1
                    ELSE 0
                    END
                )
            ,0) AS [Sum3]
FROM tablename

GROUP BY
    MonthYear
Run Code Online (Sandbox Code Playgroud)

Lam*_*mak 6

你错过了一个FROM查询.无论如何,一种方法是使用派生表:

SELECT *, [Sum1]+[Sum2]+[Sum3] AS TotalSum
FROM (Your Current Select Here) AS T
Run Code Online (Sandbox Code Playgroud)

对于SQL Server 2005+,您还可以使用CTE:

;WITH CTE AS 
(
    Your Current Select Here
)
SELECT *, [Sum1]+[Sum2]+[Sum3] AS TotalSum
FROM CTE
Run Code Online (Sandbox Code Playgroud)