2014-03-05 73 views
2

我有一個場景,我需要爲按部門,分部,數量和按日期排序的數據分配row_number。 如果金額在同一部門&分支的某些日期後重復,我想將row_number設爲1. 請您告訴我如何實現此目的? 當我嘗試使用Row_number函數時,編號在某些日期後仍在繼續。Oracle:如何重新啓動row_number函數

樣本數據: 這是行號,如果下面的函數用於row_number() over(Partition by Department, Branch, Amount order by Date)

 
Department Branch Amount Date  Row_number() 
Dep A  Bran 1 51  25-Oct-12 1 
Dep A  Bran 1 45.5 26-Nov-12 1 
Dep A  Bran 1 45.5 05-Apr-13 2 
Dep A  Bran 1 45.5 06-May-13 3 
Dep A  Bran 1 65  07-May-13 1 
Dep A  Bran 1 51  26-Aug-13 2 
Dep A  Bran 1 51  11-Sep-13 3 

但我在下面的順序期待輸出我得到。

 
Department Branch Amount Date  Row_number() 
Dep A  Bran 1 51  25-Oct-12 1 
Dep A  Bran 1 45.5 26-Nov-12 1 
Dep A  Bran 1 45.5 05-Apr-13 2 
Dep A  Bran 1 45.5 06-May-13 3 
Dep A  Bran 1 65  07-May-13 1 
Dep A  Bran 1 51  26-Aug-13 1 
Dep A  Bran 1 51  11-Sep-13 2 

任何人都可以幫助我嗎?

回答

0

你需要改變你如何識別你計算的組別row_number()

喜歡的東西:

SQL> with t (Department, Branch, Amount, Date#) 
    2 as (
    3 select 'Dep A', 'Bran 1', 51, to_date('25-10-2012','DD-MM-YYYY') from dual union all 
    4 select 'Dep A', 'Bran 1', 45.5, to_date('26-11-2012','DD-MM-YYYY') from dual union all 
    5 select 'Dep A', 'Bran 1', 45.5, to_date('05-04-2013','DD-MM-YYYY') from dual union all 
    6 select 'Dep A', 'Bran 1', 45.5, to_date('06-05-2013','DD-MM-YYYY') from dual union all 
    7 select 'Dep A', 'Bran 1', 65, to_date('07-05-2013','DD-MM-YYYY') from dual union all 
    8 select 'Dep A', 'Bran 1', 51, to_date('26-08-2013','DD-MM-YYYY') from dual union all 
    9 select 'Dep A', 'Bran 1', 51, to_date('11-09-2013','DD-MM-YYYY') from dual 
10 ) 
11 select department, branch, amount, date#, row_number() over(partition by grp order by date#) rn 
12 from (
13 select department, branch, amount, date#, sum(st_grp) over(order by date#) grp from (
14 select department, branch, amount, date#, case when amount = lag(amount,1,amount) over(order by date#) then 0 else 1 end st_grp from t 
15 ) 
16 ) 
17 order by date# 
18/

DEPAR BRANCH  AMOUNT DATE#   RN          
----- ------ ---------- -------- ----------          
Dep A Bran 1   51 25.10.12   1          
Dep A Bran 1  45,5 26.11.12   1          
Dep A Bran 1  45,5 05.04.13   2          
Dep A Bran 1  45,5 06.05.13   3          
Dep A Bran 1   65 07.05.13   1          
Dep A Bran 1   51 26.08.13   1          
Dep A Bran 1   51 11.09.13   2 
+0

你好謝謝你的信息。此查詢適用於同一部門,分支。如果分支機構或部門或兩者都發生了變化,請告訴我如何更改查詢? – user3383987