我正在开发存储过程并有如下数据
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中的视图/存储过程实现此目的?
答案 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 |
+----+------+-------+