我试着计算MYSQL中每一行的值。但它只计算第一行。有人可以协助
第一次查询:
SELECT A, B, C
FROM [TEST].[dbo].[TEST3]
结果:
A B C
7 8 9
1 2 NULL
1 3 4
1 NULL 1
计算每一行,但只显示第一行作为结果。 查询
SELECT COUNT (A + B + C)
FROM [TEST].[dbo].[TEST3]
结果:
2
应该是7+8+9 = 22
1+2+NULL = 3
等
答案 0 :(得分:2)
直接获取列的总和:
SELECT A, B, C,
COALESCE(A, 0) + COALESCE(B, 0) COALESCE(C, 0) AS total
FROM [TEST].[dbo].[TEST3]
使用COUNT
的当前查询返回单行的原因是COUNT
是一个聚合函数。在没有GROUP BY
的情况下,您告诉SQL Server返回整个表的计数。
答案 1 :(得分:1)
这就是你想要的:
SELECT IFNULL(A,0)+IFNULL(B,0)+IFNULL(C,0)
FROM [TEST].[dbo].[TEST3]
您不想在此处使用COUNT()
。 COUNT()
是一个聚合函数。每组输出一次。在您的情况下,整个查询将只输出一个值。
此外,将NULL
添加到任何内容将NULL
,而COUNT()
将忽略该内容。因此,查询的输出为2。
答案 2 :(得分:1)
COUNT()
是一个聚合函数,它将返回组结果。
结果实际上是正确的1 + 2 + NULL = NULL
,而不是3
。
SELECT COUNT (A + B + C) FROM [TEST].[dbo].[TEST3]
返回2
,因为COUNT()
只会计算非null 值。如果您在没有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]
结果:
4
这里是Demo。
答案 3 :(得分:0)
SELECT
A, B, C,
Total = A + B+ C
FROM dbo.TEST
请勿使用COUNT。