Sql 选择带和的全部(列)

Sql 选择带和的全部(列),sql,select,sum,Sql,Select,Sum,是否有一种方法可以在同一个查询中选择全部并同时获取所有列的总和 SELECT *, SUM(Colname) FROM `Table`... 谢谢。否,如果要使用聚合函数,则必须按分组,并最终为在该中指定的列获得一行,按col1、col2、col3分组 如果您需要多条记录(选择*),并且还需要其中一条记录的总和(Colname),请在两个单独的查询中执行此操作。是,您可以通过子查询执行此操作 SELECT * FROM Table, (SELECT

是否有一种方法可以在同一个查询中选择全部并同时获取所有列的总和

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

谢谢。

否,如果要使用聚合函数,则必须按
分组
,并最终为在该
中指定的列获得一行,按col1、col2、col3分组


如果您需要多条记录(
选择*
),并且还需要其中一条记录的
总和(Colname)
,请在两个单独的查询中执行此操作。

是,您可以通过子查询执行此操作

SELECT 
    * 
FROM 
    Table,
    (SELECT 
        SUM(Colname) SumColumn
    FROM 
        Table) t1
我用这个小例子在SQLServer中进行了测试

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

希望这有帮助

这可以通过使用窗口功能轻松完成:

select t.*, 
       sum(some_value) over () as total_sum
from some_table as t;
这是标准SQL,适用于所有现代DBMS


SQLFiddle:

我认为您可以通过一个子查询来实现这一点,正如我在answer@CrApHeR“仅仅因为你能,并不意味着你就应该。”乔纳桑库我完全同意你的看法。我不喜欢也不愿意那样做,但正如你所说,你可以做到。如果我必须这样做,我会像你提到的那样使用两个查询。这应该是两个查询。任何解决方案都可能是对子查询的可怕滥用。真正的问题是,为什么您希望总和显示在每一行的旁边?如果输出一个表,是否希望表中的每一行都具有相同的和值?使用的是哪种DBMS?博士后?神谕这可以用一个窗口函数轻松完成。你教了我一些新东西。谢谢你,还有+1。我从来没有见过使用
over()