2

希望有人可以在这里为我指明正确的方向。

请参阅下面的查询。

SELECT day_id,month_id,time_id,
row_number() over (partition BY month_id order by day_id ) rn
FROM minute_bars_fact order by month_id, day_Id, time_id

产生输出:

DAY_ID      MONTH_ID    Time_id rn
02-JAN-11   JAN-2011    1080    1
02-JAN-11   JAN-2011    1081    2
02-JAN-11   JAN-2011    1082    3
02-JAN-11   JAN-2011    1083    4
02-JAN-11   JAN-2011    1084    5
02-JAN-11   JAN-2011    1085    6
02-JAN-11   JAN-2011    1086    7
02-JAN-11   JAN-2011    1087    8

我在这里的期望是 rn 只会在每个新的一天增加。显然情况并非如此。我在这里做错了吗?

编辑:

日子并不总是一样的。

02-JAN-11   JAN-2011    1436    357
02-JAN-11   JAN-2011    1437    358
02-JAN-11   JAN-2011    1438    359
02-JAN-11   JAN-2011    1439    360
03-JAN-11   JAN-2011    0   361
03-JAN-11   JAN-2011    1   362
03-JAN-11   JAN-2011    2   363
03-JAN-11   JAN-2011    3   364
4

1 回答 1

4

我在这里的期望是 rn 只会在每个新的一天增加。

不,这是不正确的。您将需要使用RANKDENSE_RANK实现此行为。不是ROW_NUMBER

于 2012-08-26T15:00:43.060 回答