SQL用于计算列值的总和,并在所有行上重复此值

时间:2017-12-22 10:31:07

标签: mysql sql

我们说我有这样一张桌子:

COL1    COL2
ABC     1
DEF     2
GHI     3

我希望在新列COL3中得到COL2的总和:

COL1    COL2   COL3
ABC     1      6
DEF     2      6
GHI     3      6

所以拿一个简单的总和不会起作用,因为它只返回1个值,而我想要在所有行上重复该值。

4 个答案:

答案 0 :(得分:4)

试试这个:

SELECT *
  ,(SELECT SUM(Col2) FROM Your_Table) Col3 
FROM Your_Table

在SQL Server中尝试:

SELECT *
  ,SUM(Col2) OVER(ORDER BY(SELECT NULL)) Col3 
FROM Your_Table

答案 1 :(得分:2)

由于你没有指定dbms,这应该适用于大多数(所有?)dbms(在sql server中测试):

DECLARE @T TABLE (Col1 VARCHAR(3), Col2 INT)

INSERT @T (Col1, Col2)
VALUES ( 'ABC' , 1  )
,       ('DEF', 2)
,       ('GHI', 3)  

SELECT  *
FROM    @T
CROSS JOIN (
                SELECT SUM(T.Col2) Col3
                FROM    @T AS T
            ) X

答案 2 :(得分:2)

虽然您没有提及Server Tag的{​​{1}},但我使用SQL服务器解决了这个问题。在MYSQL Server中尝试:

MYSQL

请参阅演示here

答案 3 :(得分:1)

要添加两列,您必须执行连接查询。根据您的操作,您必须执行内部联接或外部联接。有关更多说明,您可以查看相应的数据库