Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数一数每行_Sql_Sql Server - Fatal编程技术网

Sql 数一数每行

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+

我试图计算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+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。谢谢。非常有用,谢谢。非常有用