2017-06-12 115 views
0

我有一个查询返回两个金额。我想将它们汇总在一起,而留下一个,因为它是由查询返回的。Teradata/SQL总计列

例如:

DESC | sum(AMOUNT) 
A | -61149025.940000 
B | -9696.910000 

B需要是B和A的总和,并替换当前值。保持原样查询的结果。

我的SQL是与此类似:

Select SQ.DESC, SUM(SQ.AMOUNT) 
FROM (subquery) SQ 
GROUP by SQ.DESC 

我返回的结果将是

DESC | sum(AMOUNT) 
A | -61149025.940000 
B | -61158722.850000 

我一直没能如果你想“B逻辑上使这个

回答

1

感“为所有值的总和,可以使用窗口函数:

Select SQ.DESC, 
     (CASE WHEN SQ.DESC = 'A' THEN SUM(SQ.AMOUNT) 
      WHEN SQ.DESC = 'B' THEN SUM(SUM(SQ.AMOUNT)) OVER() 
     END) as SUM_AMOUNT 
FROM (subquery) SQ 
GROUP by SQ.DESC 

注意:即使Teradata允许DESC作为列名称,但由于DESC是SQL关键字(认为是ORDER BY),所以它是一个糟糕的选择。

+0

谢谢。我真正的列名不是DESC。你正确的是一个SQL关键字。 – staples