Ho il seguente set di dati.Funzioni analitiche Oracle - ripristino di una clausola finestra
create table t1 (
dept number,
date1 date
);
Table created.
insert into t1 values (100, '01-jan-2013');
insert into t1 values (100, '02-jan-2013');
insert into t1 values (200, '03-jan-2013');
insert into t1 values (100, '04-jan-2013');
commit;
il mio obiettivo è quello di creare una colonna rango che azzera ogni volta che cambia il reparto. La colonna più vicina che posso usare per la clausola "partition by" è dept, ma non mi darà il risultato desiderato.
SQL> select * from t1;
DEPT DATE1
---------- ---------
100 01-JAN-13
100 02-JAN-13
200 03-JAN-13
100 04-JAN-13
select dept,
date1,
rank() Over (partition by dept order by date1) rnk
from t1
order by date1;
DEPT DATE1 RNK
---------- --------- ----------
100 01-JAN-13 1
100 02-JAN-13 2
200 03-JAN-13 1
100 04-JAN-13 3
L'uscita desiderata è la seguente. L'ultimo rnk = 1 è perché il record di gennaio-04 è il primo record dopo la modifica.
DEPT DATE1 RNK
---------- --------- ----------
100 01-JAN-13 1
100 02-JAN-13 2
200 03-JAN-13 1
100 04-JAN-13 1 <<<----------
Eventuali suggerimenti?
+1. . . Includete il codice per testare realmente ciò che volete sapere. E prova i risultati. Posso invitare due volte? –
Grazie Gordon. Questa è la mia solita lamentela con altre domande, seguirò meglio quello che predico :) –