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-ID: 499026

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

Ausgedruckt am: 24.11.2024 um 18:11 Uhr

Meierjo
Meierjo 27.09.2019 um 06:36:48 Uhr
Goto Top
Hallo Michael

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

Gruss
MiSt
MiSt 27.09.2019 um 07:41:34 Uhr
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.
emeriks
emeriks 27.09.2019 aktualisiert um 08:29:07 Uhr
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])
em-pie
em-pie 27.09.2019 aktualisiert um 09:20:55 Uhr
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
MiSt
MiSt 27.09.2019 um 10:00:00 Uhr
Goto Top
so, habe Rom erreichen können.

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

vielen Dank.