用SUM(Col)选择ALL

时间:2015-03-23 21:08:11

标签: sql select sum

有没有办法选择all并在同一查询中获取所有列的总和?

SELECT *, SUM(Colname) FROM `Table`...

谢谢。

3 个答案:

答案 0 :(得分:2)

这可以使用窗口函数轻松完成:

select t.*, 
       sum(some_value) over () as total_sum
from some_table as t;

这是标准SQL,适用于所有现代DBMS。

SQLFiddle:http://sqlfiddle.com/#!15/c1a74/1

答案 1 :(得分:0)

不,如果您想使用聚合函数,那么您必须GROUP BY并最终获得您在GROUP BY col1, col2, col3中指定的列的单行。

如果您想要多条记录(SELECT *)并且还想要其中一条记录的SUM(Colname),请在2个单独的查询中执行此操作。

答案 2 :(得分:0)

是的,你可以用子查询

来做到这一点
SELECT 
    * 
FROM 
    Table,
    (SELECT 
        SUM(Colname) SumColumn
    FROM 
        Table) t1

我在SQL Server中使用这个小例子进行了测试

CREATE TABLE #Test (IntData INT, Data NVARCHAR(20))

INSERT INTO #Test(IntData, Data)
SELECT 1, 'Data1' UNION
SELECT 3, 'Data2' UNION
SELECT 5, 'Data3' UNION
SELECT 7, 'Data4' UNION
SELECT 9, 'Data5' UNION
SELECT 11, 'Data6'

SELECT 
    * 
FROM 
    #Test,
    (SELECT 
        SUM(IntData) SumIntData
    FROM 
        #Test) t1

DROP TABLE #Test

希望这有帮助