Laden...

MSSQL Abfrage der letzten 20 Items

Erstellt von Maffi1986 vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.937 Views
Maffi1986 Themenstarter:in
53 Beiträge seit 2012
vor 8 Jahren
MSSQL Abfrage der letzten 20 Items

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

1.029 Beiträge seit 2010
vor 8 Jahren

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...

2.298 Beiträge seit 2010
vor 8 Jahren

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 |

Maffi1986 Themenstarter:in
53 Beiträge seit 2012
vor 8 Jahren

Vielen Dank für die Hilfe, hat Super funktioniert.

1.820 Beiträge seit 2005
vor 8 Jahren

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 🙁