2017-06-13 46 views
0

有沒有辦法在下面的公式中使用變量作爲動態數字,這樣我可以在對手在id列中更改時將4game_so_ct編號重置爲零。我試圖用id命令,並且只是通過id將它們全部排序,並且不重置數字。列4game是要查看以前的行數,其中id是相同的行數。通過變量行排序

sum(strikeouts) over (order by game_dt rows between 3 preceding and current row) as 4game_so_ct 

我試過

sum(strikeouts) over (order by game_dt rows between 4game preceding and current row) as 4game_so_ct 

但它的錯誤了明顯。

我有一個像下面

GAME_ID   GAME_DT HOME_TEAM_ID AWAY_TEAM_ID id strikeouts 4game test 4game_so_ct 
WS1192204120 19220412 WS1    NYA  NYAWS1 4   0  0  4 
BOS192204180 19220418 BOS    NYA  NYABOS 2   0 NYAWS1 2 
NYA192204210 19220421 NYA    WS1  WS1NYA 1   0 NYABOS 1 
NYA192204220 19220422 NYA    WS1  WS1NYA 2   1 WS1NYA 2 
NYA192204230 19220423 NYA    WS1  WS1NYA 0   2 WS1NYA 0 
NYA192204250 19220425 NYA    PHA  PHANYA 1   0 WS1NYA 1 
NYA192204260 19220426 NYA    PHA  PHANYA 4   1 PHANYA 4 
NYA192204280 19220428 NYA    BOS  BOSNYA 0   0 PHANYA 0 
NYA192204290 19220429 NYA    BOS  BOSNYA 6   1 BOSNYA 6 
NYA192204300 19220430 NYA    BOS  BOSNYA 4   2 BOSNYA 4 
NYA192205010 19220501 NYA    BOS  BOSNYA 2   3 BOSNYA 2 
NYA192205020 19220502 NYA    BOS  BOSNYA 1   4 BOSNYA 1 

想我在4game_so_ct欄看到

GAME_ID   GAME_DT HOME_TEAM_ID AWAY_TEAM_ID id strikeouts 4game test 4game_so_ct 
WS1192204120 19220412 WS1    NYA  NYAWS1 4   0  0  4 
BOS192204180 19220418 BOS    NYA  NYABOS 2   0 NYAWS1 2 
NYA192204210 19220421 NYA    WS1  WS1NYA 1   0 NYABOS 1 
NYA192204220 19220422 NYA    WS1  WS1NYA 2   1 WS1NYA 3 
NYA192204230 19220423 NYA    WS1  WS1NYA 0   2 WS1NYA 3 
NYA192204250 19220425 NYA    PHA  PHANYA 1   0 WS1NYA 1 
NYA192204260 19220426 NYA    PHA  PHANYA 4   1 PHANYA 5 
NYA192204280 19220428 NYA    BOS  BOSNYA 0   0 PHANYA 0 
NYA192204290 19220429 NYA    BOS  BOSNYA 6   1 BOSNYA 6 
NYA192204300 19220430 NYA    BOS  BOSNYA 4   2 BOSNYA 10 
NYA192205010 19220501 NYA    BOS  BOSNYA 2   3 BOSNYA 12 
NYA192205020 19220502 NYA    BOS  BOSNYA 1   4 BOSNYA 13 

回答

0

語法圖可以是一個有點難以遵循表。但documentation顯然,窗框規格必須是一個常數:

<window frame preceding> ::= 
{ 
    UNBOUNDED PRECEDING 
    | <unsigned_value_specification> PRECEDING 
    | CURRENT ROW 
} 
. . . 
<unsigned value specification> ::= 
{ <unsigned integer literal> } 

因此,你可以不是你想要使用Windows框確定什麼做的。

1

你過於複雜了。在SUM中使用partition by,這是預期的結果。

sum(strikeouts) over (partition by id order by game_dt) 
+0

我同意。這會讓你確切地得到你想要的。 – chris

+0

雖然下次參加這兩支球隊時不會重置爲0。我也試過這個公式。在今年晚些時候,PHA會播放NYA,並從您在數據中看到的那一行抓取5個,並在一個月後添加3次三振。我希望一個月後發揮的比賽重置爲0.如果我能夠找出一種方式爲每個特定的比賽定義一個「系列」,那麼這個公式將起作用。 –

+0

但問題並未顯示。請在問題中發佈所有詳細信息。 –

相關問題