选择将一列的值加到其他

时间:2015-12-03 10:52:40

标签: sql oracle sum

我有一个表TABLE_A,有一列。

select VALUE from TABLE_A;

VALUE   
---------
1         
2
3
4
5

我需要第二列,它会给我第一列的所有值的总和。

预期:

VALUE     SUM
--------- ---------
1         15
2         15  
3         15
4         15
5         15

我需要在没有子选择查询的情况下执行此操作。(选择代替列)

3 个答案:

答案 0 :(得分:2)

只需使用重要的子选项:

select value, (select sum(value) from TABLE_A)
from TABLE_A

JOIN

select t1.value, t2.sum_value
from TABLE_A t1
    CROSS JOIN (select sum(value) as sum_value from TABLE_A) t2

Oracle是否支持CROSS JOIN语法?

答案 1 :(得分:2)

可以使用 SUM()OVER()分析函数轻松完成。

SELECT VALUE, 
       SUM(VALUE) OVER(ORDER BY NULL) as "SUM" 
FROM TABLE_A;

工作演示:

SQL> WITH sample_data AS(
  2  -- end of sample_data mocking as real table
  3  SELECT 1 VALUE FROM dual UNION ALL
  4  SELECT 2 VALUE FROM dual UNION ALL
  5  SELECT 3 VALUE FROM dual UNION ALL
  6  SELECT 4 VALUE FROM dual UNION ALL
  7  SELECT 5 VALUE FROM dual
  8  )
  9  SELECT VALUE,
 10         SUM(VALUE) OVER() as "SUM"
 11  FROM sample_data;

     VALUE        SUM
---------- ----------
         1         15
         2         15
         3         15
         4         15
         5         15

答案 2 :(得分:0)

只需使用分析功能。正确的表达方式是:

select VALUE, sum(VALUE) over () as "sum"
from TABLE_A;

这是SQL的标准部分,通常比执行相同计算的其他方法更有效。