Sql 数一数每行
我试图计算MYSQL中每一行的值。但它只计算第一行。有人能帮忙吗 第一个问题:Sql 数一数每行,sql,sql-server,Sql,Sql Server,我试图计算MYSQL中每一行的值。但它只计算第一行。有人能帮忙吗 第一个问题: SELECT A, B, C FROM [TEST].[dbo].[TEST3] 结果: A B C 7 8 9 1 2 NULL 1 3 4 1 NULL 1 2 4 对每行进行计数,但只显示第一行作为结果。 质疑 结果: A B C 7 8 9 1 2 NULL 1 3 4 1 NULL 1 2 4 它应该是7+8+
SELECT A, B, C
FROM [TEST].[dbo].[TEST3]
结果:
A B C
7 8 9
1 2 NULL
1 3 4
1 NULL 1
2
4
对每行进行计数,但只显示第一行作为结果。
质疑
结果:
A B C
7 8 9
1 2 NULL
1 3 4
1 NULL 1
2
4
它应该是7+8+9=22
1+2+NULL=3
等等。直接取列的总和:
SELECT A, B, C,
COALESCE(A, 0) + COALESCE(B, 0) COALESCE(C, 0) AS total
FROM [TEST].[dbo].[TEST3]
当前使用
COUNT
的查询返回一行的原因是COUNT
是一个聚合函数。如果没有分组依据
,则告诉SQL Server返回整个表的计数。只需直接获取列的总和:
SELECT A, B, C,
COALESCE(A, 0) + COALESCE(B, 0) COALESCE(C, 0) AS total
FROM [TEST].[dbo].[TEST3]
当前使用COUNT
的查询返回一行的原因是COUNT
是一个聚合函数。如果没有“分组依据”,您将告诉SQL Server返回整个表的计数。这就是您想要的:
SELECT IFNULL(A,0)+IFNULL(B,0)+IFNULL(C,0)
FROM [TEST].[dbo].[TEST3]
您不想在此处使用COUNT()
COUNT()
是一个聚合函数。每组输出一次。在您的情况下,整个查询将只输出一个值
此外,向任何内容添加NULL
都将是NULL
,而COUNT()
将忽略这一点。因此,查询的输出为2。这是您想要的:
SELECT IFNULL(A,0)+IFNULL(B,0)+IFNULL(C,0)
FROM [TEST].[dbo].[TEST3]
您不想在此处使用COUNT()
COUNT()
是一个聚合函数。每组输出一次。在您的情况下,整个查询将只输出一个值
此外,向任何内容添加NULL
都将是NULL
,而COUNT()
将忽略这一点。因此,查询的输出为2。COUNT()
是一个聚合函数,将返回组结果
结果实际上是正确的,因为1+2+NULL=NULL
,而不是3
SELECT COUNT (A + B + C) FROM [TEST].[dbo].[TEST3]
返回2
,因为COUNT()
将只计算非空值。如果不使用COUNT()
运行查询,它将返回4行
SELECT A + B + C FROM [TEST].[dbo].[TEST3]
结果是
24
NULL
8
NULL
但是,如果要将NULL
作为0返回行,可以在列中使用COALESCE
SELECT COALESCE(A, 0) + COALESCE(B, 0) + COALESCE(C, 0)
FROM [TEST].[dbo].[TEST3]
现在将返回
24
3
8
2
当你用count写它时,它现在将返回4
SELECT COUNT(COALESCE(A, 0) + COALESCE(B, 0) + COALESCE(C, 0) )
FROM [TEST].[dbo].[TEST3]
结果:
A B C
7 8 9
1 2 NULL
1 3 4
1 NULL 1
2
4
这里有一个。COUNT()
是一个聚合函数,它将返回组结果
结果实际上是正确的,因为1+2+NULL=NULL
,而不是3
SELECT COUNT (A + B + C) FROM [TEST].[dbo].[TEST3]
返回2
,因为COUNT()
将只计算非空值。如果不使用COUNT()
运行查询,它将返回4行
SELECT A + B + C FROM [TEST].[dbo].[TEST3]
结果是
24
NULL
8
NULL
但是,如果要将NULL
作为0返回行,可以在列中使用COALESCE
SELECT COALESCE(A, 0) + COALESCE(B, 0) + COALESCE(C, 0)
FROM [TEST].[dbo].[TEST3]
现在将返回
24
3
8
2
当你用count写它时,它现在将返回4
SELECT COUNT(COALESCE(A, 0) + COALESCE(B, 0) + COALESCE(C, 0) )
FROM [TEST].[dbo].[TEST3]
结果:
A B C
7 8 9
1 2 NULL
1 3 4
1 NULL 1
2
4
这是一个例子
不要使用COUNT
不要使用COUNT。标记更改为SQL Server,因为语法显然不是MySQL。标记更改为SQL Server,因为语法显然不是MySQL。谢谢。非常有用,谢谢。非常有用