Teradata / SQL总和列

时间:2017-06-12 19:49:47

标签: sql teradata

我有一个返回两个金额的查询。我想将它们加在一起,同时留下查询返回的一个。

例如:

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

我无法从逻辑上理解这个

1 个答案:

答案 0 :(得分:1)

如果希望“B”是所有值的总和,则可以使用窗口函数:

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)。