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.
|