如何在SQL中获取列的总和

时间:2017-03-31 06:00:42

标签: sql-server stored-procedures view

我正在开发存储过程并有如下数据

ID Name Value
1  All  0 
2  ABC  10
3  DEF  15
4  GHI  20

现在,我的要求是计算所有列的总和,除了名称为“全部”,它应该将其显示为“全部”的值。

所以预期结果应该是这样的。

ID Name Value
1  All  45 
2  ABC  10
3  DEF  15
4  GHI  20

如何使用SQL中的视图/存储过程实现此目的?

1 个答案:

答案 0 :(得分:2)

在Sub查询中求和并用case

处理ALL行

<强>架构:

CREATE TABLE #TAB (ID int, Name Varchar(20),Value int)

INSERT INTO #TAB
SELECT 1,  'All',  0 
UNION ALL
SELECT 2,  'ABC',  10
UNION ALL
SELECT 3,  'DEF',  15
UNION ALL
SELECT 4,  'GHI',  20

现在选择案例表达式

SELECT ID
    ,NAME
    ,CASE 
        WHEN NAME = 'All'
            THEN (
                    SELECT SUM(Value)
                    FROM #TAB
                    WHERE NAME <> 'ALL'
                    )
        ELSE VALUE
        END AS VALUE
FROM #TAB

结果将是

+----+------+-------+
| ID | NAME | VALUE |
+----+------+-------+
|  1 | All  |    45 |
|  2 | ABC  |    10 |
|  3 | DEF  |    15 |
|  4 | GHI  |    20 |
+----+------+-------+