2017-06-13 48 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

但问题并未显示。请在问题中发布所有详细信息。 –

相关问题