Bedingte Auswahl von Zeilen basierend auf Spalte Wert

ID  RANGE_ID            START_DATE    END_DATE    BAND_TYPE           FLAG_LINE
3     1               01/03/2013    31/03/2013          R                   1
4     1               01/03/2013    31/03/2013          R                   0
5     2               01/03/2013    31/03/2013          R                   1
6     2               01/03/2013    31/03/2013          R                   0
7     3               01/03/2013    31/03/2013          R                   0
8     3               01/03/2013    31/03/2013          N                   0

Aus dieser Tabelle für jede RANGE_ID, brauche ich, um wählen Sie die Zeilen mithilfe der folgenden Bedingungen:
Wenn es Zeilen mit identischen Spalten (abgesehen von dem ID-Feld), dann wählen Sie nur die Zeile, die hat FLAG_LINE = 1, wenn es identische Zeilen, aber keiner von Ihnen enthalten eine FLAG_LINE=1 Spalte wählen Sie dann alle von Ihnen auf dieser Grundlage die Abfrage zurückgeben soll die folgenden Ergebnisse:

ID  RANGE_ID          START_DATE    END_DATE      BAND_TYPE           FLAG_LINE
3     1               01/03/2013    31/03/2013          R                   1
5     2               01/03/2013    31/03/2013          R                   1
7     3               01/03/2013    31/03/2013          R                   0
8     3               01/03/2013    31/03/2013          N                   0

Ich versuchte es in Stücke schneiden: ich.e führen Sie etwas ähnliches für jeden BEREICH:

begin
  for x in ( select count(*) cnt
               from dual 
              where exists (
                select 1 FROM myTable 
                WHERE RANGE_ID = 1 AND FLAG_LINE = 1) )
  loop
        if ( x.cnt = 1 ) 
        then
           dbms_output.put_line('flag line exists');
           --insert the line with FLAG_LINE = 1 into temp table for this range
        else 
           dbms_output.put_line('does not exist');
           --insert the lines into temp table for this range
        end if;
  end loop;
end;

Verwendung dieser Methode wird für jede PALETTE, die ich füllen eine temp-Tabelle und gibt die Ergebnisse zurück an das Ende, aber das ist nicht ganz flexibel ist, ist es auch eine andere Möglichkeit, dass dies erreicht werden kann?

Dank

InformationsquelleAutor 03Usr | 2013-06-27

Schreibe einen Kommentar