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 が新しい日にのみ増加することです。

いいえ、これは正しくありません。RANKこの動作を使用するかDENSE_RANK、達成する必要があります。いいえROW_NUMBER

于 2012-08-26T15:00:43.060 に答える