Oracle-SQL

killerworm

Grünschnabel
Hallo zusammen
Ich habe hier eine Aufgabe, zu der ich bis jetzt keine gute Lösung gefunden habe:

In einer Tabelle mit n Records welche in einem Feld durch 'Header', 'Body' oder 'Footer' gekennzeichnet werden. Sieht also ungefähr folgendermassen aus:
1 Header
2 Body
3 Body
4 Body
5 Footer
6 Header
7 Body
8 Body
9 Footer
10 Header

In einem Select sollte ich nun jeder Gruppe (jeweils von Header bis Footer) eine eindeutige Nummer zuordnen. Ich hab da bereits mit analytischen Funktionen versucht weiterzukommen, aber ich schaff das nicht. Mit 2 Updates auf die Tabelle geht das schon, aber das ist sehr langsam und die Tabelle kann sehr gross sein.
Hat jemand eine Idee?
Besten Dank
Hanspeter
 
hmm,

irgendwie verstehe ich nicht was du willst bzw. brauchst. Was willst du denn wissen ? Ich denke das die Headerzahlen dir genügen da du durch den nächsten Header weisst wo der Footer zum ersten Header ist. Was meinst du mit Updates ? Ich steh aufem Schlauch :(
 
Was ich will, ist folgendes, und zwar wie gesagt mit EINEM Select:

NUM TYP GRP
1 Header 1
2 Body 1
3 Body 1
4 Body 1
5 Footer 1
6 Header 2
7 Body 2
8 Body 2
9 Footer 2
10 Header 3

Ich habe unterdessen aber aus einem anderen Forum folgenden Select bekommen:

select NUM, TYP, sum(Decode(TYP,'Header',1,0))over(order by NUM) as GRP from t1
order by num

Funktioniert tadellos.
Besten Dank auch dir.
 

Neue Beiträge

Zurück