mist
Goto Top

SQL-Frage - höchster Wert

Guten Morgen,

ich sitze hier gerade vor einem SQL-Problem und komme nicht weiter. Ich hoffe jemand hat da eine Idee für mich...

Ich habe folgende Tabelle:

| Artikel | Nr. | Menge |
| 0815 | 001 | 34 |
| 0815 | 001 | 44 |
| 0815 | 002 | 33 |
| 0815 | 002 | 24 |
| 0815 | 003 | 14 |
| 0815 | 003 | 36 |
| 0815 | 003 | 37 |

Ich brauche jetzt eine SELECT, welches mir alle Zeilen anzeigt, die den höchsten Wert bei "Nr." hat. In diesem Beispiel wären es 3 Zeilen als Ergebnis
| 0815 | 003 | 14 |
| 0815 | 003 | 36 |
| 0815 | 003 | 37 |

Mit
SELECT Artikel, MAX(Nr.) bekomme ich nur |0815|003| angezeigt. Ich vermute, dass ich irgendwas ins WHERE einbauen muss; komme es aber nicht hin.

Hätte jemand einen Tipp, wie ich das umsetzen kann?

Gruß
Michael

Content-Key: 499026

Url: https://administrator.de/contentid/499026

Printed on: April 26, 2024 at 20:04 o'clock

Member: Meierjo
Meierjo Sep 27, 2019 at 04:36:48 (UTC)
Goto Top
Hallo Michael

Etwa so sollte es klappen
https://im-coder.com/alle-zeilen-mit-dem-max-wert-in-sql.html

Gruss
Member: MiSt
MiSt Sep 27, 2019 at 05:41:34 (UTC)
Goto Top
Hi,
ich habe eben leider vergessen zu erwähnen, dass es nicht nur 0815 gibt sonst auch noch andere Artikel.
Ich brauche von jedem Artikel die jeweilige höchsten Nr.

Wenn ich jetzt nach 0815 filter, zeigt er mit nichts an, da es einen anderen Artikel gibt, der eine noch höhere Nr. als 003 hat.

SELECT * FORM tabelle
WHERE nr = (SELECT MAX(nr) FROM tabelle)
Das zeigt mir alle Zeilen mit dem höchsten Wert ab.
Member: emeriks
emeriks Sep 27, 2019 updated at 06:29:07 (UTC)
Goto Top
Hi,
in etwa so
SELECT * FROM [tabelle]
WHERE [Nr] = (SELECT TOP 1 [Nr] FROM [tabelle] ORDER BY [Nr] DESC)

E.

Edit:
Oder
SELECT * FROM [tabelle]
WHERE [Nr] = (SELECT Max([Nr]) FROM [tabelle])
Member: em-pie
em-pie Sep 27, 2019 updated at 07:20:55 (UTC)
Goto Top
Moin,

oder man macht direkt ein
SELECT artikel, max(nr), menge
FROM myTab
Group by artikel, menge
Having MAX(nr)

ist aber ungetestet; hoffe habe keinen Denkfehler dabei...

Edit: obiges wird vermutlich nicht funktionieren, daher besser:
SELECT tbl1.artikel, tbl1.nr, tbl1.menge
FROM myTab tbl1
INNER JOIN (SELECT artikel, max(nr) as nr FROM myTab GROUP BY artikel) as tbl2
WHERE tbl1.artikel = tbl2.artikel AND tbl1.nr = tbl2.nr
Ist die frage, was am Ende die performantere Lösung sein wird...

Du siehst aber :viele Wege führen nach Rom face-smile

Gruß
em-pie
Member: MiSt
MiSt Sep 27, 2019 at 08:00:00 (UTC)
Goto Top
so, habe Rom erreichen können.

SELECT artikel, MAX(nr.), menge
FROM tabelle
GROUP BY 1,3

vielen Dank.