Sql 需要根据行计算sum()
需要逐行计算总和Sql 需要根据行计算sum(),sql,sql-server,tsql,Sql,Sql Server,Tsql,需要逐行计算总和 S1 S2 S3 S4 S5 0 0 1 0 1 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 期望输出 S1 S2 S3 S4 S5 SUM 0 0 1 0 1 2 0 1 1 1 1 4 1 1 1 1 0 4 0 1 0 0 0 1 提前谢谢。试试这个
S1 S2 S3 S4 S5
0 0 1 0 1
0 1 1 1 1
1 1 1 1 0
0 1 0 0 0
期望输出
S1 S2 S3 S4 S5 SUM
0 0 1 0 1 2
0 1 1 1 1 4
1 1 1 1 0 4
0 1 0 0 0 1
提前谢谢。试试这个-
模式
DECLARE @table1 TABLE
(
s1 int,
s2 int,
s3 int,
s4 int
)
INSERT INTO @table1 VALUES(0, 0, 1, 0)
INSERT INTO @table1 VALUES(0, 1, 1, 1)
INSERT INTO @table1 VALUES(1, 1, 1, 1)
INSERT INTO @table1 VALUES(0, 1, 1, 0)
查询
SELECT s1, s2, s3, s4,
(
SELECT SUM(TotalCnt) FROM (VALUES (s1), (s2), (s3), (s4)) as t(TotalCnt)
) as [Sum]
FROM @table1
SELECT s1, s2, s3, s4, s5,
s1 + s2 + s3 + s4 + s5 AS [SUM]
from tblNum;
结果
s1 s2 s3 s4 Sum
0 0 1 0 1
0 1 1 1 3
1 1 1 1 4
0 1 1 0 2
使用简单的添加:
SELECT s1, s2, s3, s4, s5,
[SUM] = s1 + s2 + s3 + s4 + s5
FROM table;
如果任何列可为空,请使用COALESCE(sN,0)
将其包装
要避免使用
ISNULL/CASE/COALESCE/IIF
处理NULL
,可以使用SUM
和交叉应用
:
SELECT s1, s2, s3, s4, s5, sub.[sum]
FROM #tab
CROSS APPLY(SELECT SUM(c)
FROM (VALUES (s1), (s2), (s3), (s4), (s5)) AS s(c)
) AS sub([sum])
只需
+
查询
SELECT s1, s2, s3, s4,
(
SELECT SUM(TotalCnt) FROM (VALUES (s1), (s2), (s3), (s4)) as t(TotalCnt)
) as [Sum]
FROM @table1
SELECT s1, s2, s3, s4, s5,
s1 + s2 + s3 + s4 + s5 AS [SUM]
from tblNum;
一个简单的解决方案是执行下一个查询:
select s1, s2, s3, s4, s5,isnull(s1,0) + isnull(s2,0) + isnull(s3,0) + isnull(s4,0) + isnull(s5,0) as Total
from table
试试这个:-
SELECT [S1] ,[S2],[S3] ,[S4],[S5], sum(S1+S2+S3+S4+S5) as sum
FROM TableName
group by [S1],[S2],[S3] ,[S4],[S5]
您在第三行出现错误
10
is4
not3
我们看不出您的代码的哪一部分导致了问题。你的问题中有什么遗漏吗?