我有一个返回两个金额的查询。我想将它们加在一起,同时留下查询返回的一个。
例如:
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
我无法从逻辑上理解这个
答案 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
)。