Per seguenti dati:La selezione di tutte le righe fino a quando prima occorrenza del dato valore
data | valore | controllare
2009 | 5 | 1
2008 | 5 | 1
2007 | 5 | 1
2006 | 5 | 0
2005 | 5 | 0
2004 | 5 | 1
2003 | 5 | 1
2002 | 5 | 1
ho bisogno di selezionare tutte le righe a partire dal 2009 indietro fino a prima occorrenza di 0 nella colonna di controllo:
data | valore | controllare
2009 | 5 | 1
2008 | 5 | 1
2007 | 5 | 1
Ho provato con la funzione di ritardo, ma sono stato in grado di controllare solo un mese indietro.
Sto lavorando su Oracle 10g.
Grazie in anticipo,
UPDATE:
Tutto sembra funzionare bene, il mio set di dati di test è troppo piccolo per dire qualcosa circa le differenze di prestazioni. Grazie per tutti i tuoi input!
Questo sarebbe solo "stop scansione" se l'ordine interiore è stata soddisfatta da un indice, nel qual caso si potrebbe anche utilizzare la prima versione. In caso contrario, Oracle ordinerà per intero il set di risultati interno. –
Certo che lo farà. Ma questa soluzione richiede un solo indice su (data) per funzionare in modo efficiente, mentre la soluzione MAX() richiede anche un indice su (controllo, data). – Quassnoi