2017-06-12 96 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