Thema: PL/SQL Frage!
Einzelnen Beitrag anzeigen
Alt 25.01.2007, 16:52   #6
pc.net
Aussteiger
 
Benutzerbild von pc.net
 
Registriert seit: 07.10.2001
Ort: Nettistan
Beiträge: 12.997

Mein Computer

Standard

hab da jetzt schnell mal was runtergetippt - und bedingt getestet.
Code:
set serveroutput on
declare
  cursor c_art is
    select art.*
    from artikel art
    order by artnr, verkauf_dat desc
    ;

  cursor c_anzahl_pro_art (p_artnr in number) is
    select count(1)
    from artikel
    where artnr = p_artnr
    ;

  v_artnr_vorh artikel.artnr%TYPE := 0;
  v_anzahl     number := 0;
  v_zaehler    number := 0;

begin
  for r_art in c_art loop
    if r_art.artnr != v_artnr_vorh then
      -- Gruppenwechsel, Zähler zurücksetzen 
      -- und Anzahl der Sätze pro Artikel ermitteln
      v_zaehler := 0;
      open c_anzahl_pro_art (r_art.artnr);
        fetch c_anzahl_pro_art into v_anzahl;
      close c_anzahl_pro_art;
      dbms_output.put_line('Sätze pro ArtNr ' || r_art.artnr || ': ' || to_char(v_anzahl));
    end if;

    v_zaehler := v_zaehler + 1;

    if v_zaehler in (1,2,3,4,5,v_anzahl) then
      dbms_output.put_line(r_art.artnr || ' ' || r_art.verkauf_dat || ' ' ||  r_art.vk_menge);
    end if;

    v_artnr_vorh := r_art.artnr;
  end loop;
end;
/


gibt sicherlich interessantere lösungsmöglichkeiten auch noch ...
____________________________________
Praktizierender Eristiker

No hace falta ser un genio para saber quién dijo eso.
Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein.
pc.net ist offline   Mit Zitat antworten