PDA

View Full Version : SQL ersten Satz einer Gruppe holen



Starocotes
26-08-20, 11:10
Ich glaube ich stehe auf dem Schlauch,
Ich habe eine Tabelle da stehen Rechnungspositionen drin, also:

Firma,
Auftrag,
Lieferschein,
Position,
Artikel,
Kunde,
Vertreter

Ich brauche jetzt pro Artikel den Satz mit der niedrigsten Auftagsnummer.


Meine Idee war daher:

SELECT
*
FROM
Positionen tab1
INNER JOIN
(
SELECT
Firma,
min(Auftrag) as MinAuftrag,
Lieferschein,
Position
FROM
Positionen
GROUP BY
Firma,
Lieferschein,
Position,
Artikel
) tab2
ON
tab1.Firma = tab2.Firma and
tab1.Auftrag = MinAuftrag and
tab1.Lieferschein = tab2.Lieferschein and
tab1.Position = tab2.Position

aber das funktioniert so nicht.

Fuerchau
26-08-20, 11:15
Die frage ist doch, kann ein Lieferschein mehr als einen Auftrag haben und was macht die Position in der Gruppierung?

SELECT
Firma,
Artikel
min(Auftrag) as MinAuftrag,
Lieferschein,
FROM
Positionen
GROUP BY
Firma,
Lieferschein,
Artikel

Starocotes
26-08-20, 11:22
Ein Auftrag kann mehrere Lieferscheine haben und natürlich auch mehr Positionen.

Aber ja, das ist glaub ich mein Denkfehler, brauchen tue ich die beim nem Inner Join nicht.

Starocotes
26-08-20, 15:46
Wen es interessiert, so scheint es zu klappen:


SELECT
*
FROM
Positionen tab1
INNER JOIN
(
SELECT
Firma,
min(Auftrag || Lieferschein || Position) as MinIdx,
FROM
Positionen
GROUP BY
Firma,
Artikel
) tab2
ON
tab1.Firma = tab2.Firma and
tab1.Auftrag || tab1.Lieferschein || tab1.Position = MinAuftrag and
tab1.Artikel = tab2.Artikel
WHERE
tab1.Auftrag || tab1.Lieferschein || tab1.Position = MinAuftrag and