Teradata/SQL 对列求和

Teradata/SQL sum together columns

我想查询 return 两个金额。我想将它们加在一起,同时保留一个,因为它是 return 由查询编辑的。

例如:

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

B需要是B和A之和,并替换当前值。 A 保持查询结果不变。

我的SQL是这样的:

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

我的 return 结果是

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

我无法从逻辑上理解这一点

如果你想"B"是所有值的总和,你可以使用window函数:

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