如何在DB2 SQL中获取数据,限制返回的行数,并将这些行的SUM用于一列?

时间:2014-10-27 22:08:50

标签: sql db2 sum

我有一个返回一些记录的简单查询:

select reference as ref, amount as amt
from my.table
where foo_ref like 'B%'
and foo_amount != 0.000
fetch first 12 rows only

我还想做的是对这12个返回的行的amt列进行SUM。我是SQL的新手,所以我不确定这是怎么做的。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

 select reference as ref, SUM(amount) as amt
 from my.table
 where foo_ref like 'B%'
 and foo_amount != 0.000
 group by reference
 fetch first 12 rows only

SUM()以amount的形式添加值。我添加了一个组作为参考。结果将是一个表,该表是一组具有金额总和的引用。

每次使用SUM(),COUNT(),MAX(),MIN()等等时,您还必须向不使用这些函数的字段添加分组。

答案 1 :(得分:0)

DB2的版本和发行版是什么?当前版本中有一些强大的OLAP功能..

with tbl as (
   select reference as ref, amount as amt
   from my.table
   where foo_ref like 'B%'
     and foo_amount != 0.000
   order by ref
   fetch first 12 rows only )
select tbl.*, sum(amt) as tot_amt 
from tbl  
group by rollup ((ref,amt))

这将返回13行,其中第13行包含NULL为ref和amt,而具有tot_amt中12行的总数。