View Full Version : SQL erste x sätze aller Gruppen
Hallo,
habe eine datei mit Artikel und Chargen und möchte zu jeden Teil immer die letzten 3 Chargen
habe es so versucht
select artikel, charge from datei group by artikel, charge fetch first 3 rows olny
dabei bekommen ich aber nur 3 sätze
gibt es da eine lösung
Danke
DD3TJ
hm, als SQL habe ich keine (lesbare) Idee,
aber vielleicht in einem Programm als Cursor definieren
select artikel, charge from datei group by artikel, charge order by artikel, charge
und dann in Fetch-Schleife lesen:
- bei Artikelwechsel Zähler auf 0 setzen
- Satz ausgeben wenn Zähler<3
- Zähler+1
Artikelstamm JOIN auf ein (Select CHARGE FROM CHARGENSTAMM WHERE CARTIKEL =AARTIKEL FRETCH FIRST 3 ROWS)
Aber Achtung ORDER BY DATE DESC mit angeben, sonst bekommst du nur die ersten 3 Chargen...
Wie wär's damit:
With x as select Rank() Over(Partition By Artikel order By Artikel, Charge Desc) lfd
artikel, charge
from datei
group by Artikel, Charge
Select *
From X
Where Lfd between 1 and 3;
ggf. ist noch eine zusätliche Common Table Expression erforderlich wegen des GROUP BYs
Birgitta
Hallo Frau Hauser,
Damit ging es
Danke
Gruss
DD3TJ
Thibaut Foucart
Hallo Birgitta,
was ist denn das? Sowas habe ich ja noch nie gesehen!!!!:eek:
Das sind auch Funktionen die es erst ab V6 gibt.
Wer also noch auf V5 ist kann diese nicht nutzen.
Stichwort im SQL-Handbuch: OLAP sowie auch neu CUBE.
Die OLAP-Ranking Funktionen (Row_Number(), Rank() und Dense_Rank()) gibt es bereits seit Release V5R4!
Das multidimensional Grouping (CUBE, ROLLUP und GROUPING SET) gibt es allerdings erst ab 6.1.
Wobei das eine mit dem anderen nichts zu tun hat.
Birgitta
@Fuerchau
Handbuch? Was ist denn das? ;)
Dann werde ich mir das mal anschauen, sieht interresant aus...