2015-05-01 50 views
0

我想複製錨定的sumif(類似於excel)。爲了說明這一點,這裏有一個樣本數據集:根據行號動態定義總和範圍?

Tag #1 #2 
A 2 4 
B 1 5 
C 3 5 
D 7 0 
E 9 3 

我希望得到的輸出:

Tag row_number sum_#1 sum_#2 
A  1   22  17 
B  2   20  13 
C  3   19  8 
D  4   16  3 
E  5   9  3 

那麼有效,使用ROW_NUMBER()函數來此基礎求和斷。或者,如果有另一種方式來做到這一點,那也很棒。我已經嘗試了一段時間,並會發布更新,如果我找出如何解決這個問題。

回答

1

您可以使用sum()作爲窗口函數來做到這一點:

select 
    Tag, 
    row_number() over (order by tag) as "row_number", 
    sum("#1") over (order by tag desc) as "sum_#1", 
    sum("#2") over (order by tag desc) as "sum_#2" 
from table order by tag; 

Sample SQL Fiddle

與樣品數據輸出將是:

| tag | row_number | sum_#1 | sum_#2 | 
|-----|------------|--------|--------| 
| A |   1 |  22 |  17 | 
| B |   2 |  20 |  13 | 
| C |   3 |  19 |  8 | 
| D |   4 |  16 |  3 | 
| E |   5 |  9 |  3 |