verwendetes Datenbanksystem: MSSQL Express
Hallo,
irgendwie stehe ich grade auf dem Schlauch, gibt es ein gegenteil von TOP?
SELECT TOP 20
[gutschriftnummer]
,[artikelbezeichnung]
,[menge]
,[einzelpreis]
,[datum]
FROM [waagemanager].[dbo].[gutschriften]
WHERE kdnr = 9 Order by id desc
Das gibt mir die ersten 20 aus, ich will aber die letzten 20 einträge ausgeben.
Hat jemand nen Tipp für mich?
Danke im vorraus
Hi,
ich glaub das gibt's so nicht direkt. Da ich allerdings davon ausgehe, dass die Daten dort in irgendeiner Art sortiert sind oder sortiert werden - schlage ich eine umgekehrte Sortierung vor 😉
Normal:
SELECT TOP 20
[gutschriftnummer]
,[artikelbezeichnung]
,[menge]
,[einzelpreis]
,[datum]
FROM [waagemanager].[dbo].[gutschriften]
WHERE kdnr = 9 Order by id
ORDER BY datum
Umgekehrt:
SELECT TOP 20
[gutschriftnummer]
,[artikelbezeichnung]
,[menge]
,[einzelpreis]
,[datum]
FROM [waagemanager].[dbo].[gutschriften]
WHERE kdnr = 9 Order by id desc
ORDER BY datum DESC
LG
Oh - und noch als Nachtrag - was immer du dort genau tust hat offensichtlich mit Belegen zu tun.
Ich als Kunde sehe es zwar häufig, dass Tabellen im Standard ohne Sortierung angezeigt werden - kann dir aber sagen, dass ich das überhaupt nicht leiden kann.
Wenn ich mir als Kunde Belege aufrufe - dann hab ich am liebsten die Neuesten vorn stehen, wenn ich schon die Startanzeige nicht anpassen kann...
Hallo,
das was Taipi88 beschreibt ist der einzig richtige und sinnvolle Weg. TOP liefert immer die ersten n-Einträge der Ergebnismenge. Möchte man nun die letzten n-Ergebnisse, muss die Abfrage das Ergebnis anders herum zurück liefern.
Das TOP bezieht sich ja schließlich auf die Ergebnismenge und nicht den Inhalt der Tabelle auf die die Abfrage ausgeführt wird.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Hallo,
unabhängig von der o.g. Lösung möchte ich noch den Hinweis auf ROW_NUMBER (Transact SQL) geben, welches Zeilennummern zu einem Abfrageergebnis hinzufügt, welche dann in einer übergeordneten Abfrage z.B. über
RowNr >= (max(RowNr)-20)
verwendet werden könnten.
Nobody is perfect. I'm sad, i'm not nobody 🙁