Registriert seit: 29. Sep 2003
205 Beiträge
Delphi XE Enterprise
|
AW: Oracle LAG/LEAD Funktion falsche Sortierung?
12. Okt 2010, 15:01
Jetzt hab ich das Problem gelöst:
SQL-Code:
for fkt_rec in (
select
Baustein,
LAG(Baustein, 1) over (order by rownum) "PreBaustein",
Funktion,
LAG(Funktion, 1) over (order by rownum) "PreFunktion",
Name,
rownum
from
(select
Baustein,
Funktion,
Name,
rownum
from
Tabelle1, Tabelle2
where
Tabelle1.LfdNrA = Tabelle2.LfdNrA
order by
Baustein, Funktion, Name, rownum)
order by
rownum
) loop
if fkt_rec."PreBaustein" is null
then
dbms_output.put_line('--////////////////////////////////////////////////////////////////////////////////');
dbms_output.put_line('-- ' || fkt_rec.Baustein);
end if;
if fkt_rec.Baustein <> fkt_rec."PreBaustein"
then
dbms_output.put_line('');
dbms_output.put_line('--////////////////////////////////////////////////////////////////////////////////');
dbms_output.put_line('-- ' || fkt_rec.Baustein);
end if;
if fkt_rec.Funktion <> fkt_rec."PreFunktion" or fkt_rec."PreFunktion" is null
then
dbms_output.put_line('');
dbms_output.put_line('-- ' || fkt_rec.Funktion);
dbms_output.put_line('');
end if;
dbms_output.put_line(fkt_rec.Name);
end loop;
Im Subselect wird einmalig und richtig die Sortierung festgelegt und kann somit von der LAG Funktion nicht mehr durcheinander gebracht werden.
Geändert von mkinzler (12. Okt 2010 um 15:03 Uhr)
Grund: Code-Tag durch SQL-Tag ersetzt
|
|
Zitat
|