我寫過這段代碼的朋友。它會生成srlnum,很多。記錄和lotsrl的 srlnum將總數爲1至5000記錄5000 後,它會再次從1開始..生成號碼
/* Formatted on 2012/12/21 15:00 (Formatter Plus v4.8.8) */
SELECT ROW_NUMBER() OVER (ORDER BY a.co_series, a.CATEGORY,
a.dnr_from) srlnum,
CASE
WHEN MOD (ROW_NUMBER() OVER (ORDER BY a.co_series, a.CATEGORY,
a.dnr_from),
5000
) = 0
THEN 5000
ELSE MOD (ROW_NUMBER() OVER (ORDER BY a.co_series, a.CATEGORY,
a.dnr_from),
5000
)
END lotsrl
FROM iq_dnrfl a, iq_cocat b
WHERE a.co_series = 'S1'
--SYS_CONTEXT ('TFR_CTX', 'p$_csrcod')
AND a.CATEGORY = 9
--SYS_CONTEXT ('TFR_CTX', 'p$_category')
AND a.co_series = b.co_series
AND a.CATEGORY = b.CATEGORY
AND NVL (olf_flag, 'N') = 'Y';
一些這樣的事
srlnum ,lotsrl
1 1
2 2
3 3
4 4
5 5
. .
. .
. .
5000 5000
5001 1
.
.
.
10000 5000
10001 1
.
.
.
但現在我想另一個列應該產生1到5000之間的數字1和2從另一個數字在1到5000之間。
類似這樣的東西
srlnum ,lotsrl ,num
1 1 1
2 2 1
3 3 1
4 4 1
5 5 1
. . 1
. . 1
. . 1
5000 5000 1
5001 1 2
. 2 2
. 3 2
. 2
10000 5000 2
10001 1 3
. 3
.
.
請幫我的朋友
這很好,因爲您不需要對分區子句進行復雜的計算,但是如果oracle引擎不重寫代碼,select_中的_select將對性能造成影響,導致性能下降通過第二層次的分析功能。或者你可以寫在一個單一的選擇? –
HEY Ajith Sasidharan非常感謝 –