计算每一行

时间:2018-02-19 03:57:55

标签: 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

计算每一行,但只显示第一行作为结果。 查询

SELECT COUNT (A + B + C)
FROM [TEST].[dbo].[TEST3]

结果:

2

应该是7+8+9 = 22
1+2+NULL = 3

4 个答案:

答案 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。