Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Laufende Nummer in SQL Abfrage

Begonnen von accessdau, Dezember 29, 2020, 09:40:33

⏪ vorheriges - nächstes ⏩

accessdau

Guten Morgen,

ich weiß, altes Thema aber ich bekomme ein Detail nicht gebacken. Mit der bekannten Methode:

SELECT (select count (*) FROM [Tabelle] as Tab WHERE [Tab].[ID] <  [Tabelle].[ID]) +1 AS LaufNr, Zeitstempel,
FROM Tabelle

funktioniert die laufende Nummer gut. Nun möchte ich aber den Zeitstempel zusätzlich aufsteigend sortiert haben. (Mit laufender Nummer) etwa so:
1. 01.01.2020
2. 03.04.2020 etc.

füge ich ein ORDER BY Zeitstempel ein ist die Laufende Nummer durcheinander. Weiß jemand wie das geht??? VIELEN DANK!!

steffen0815

Hallo,
da der Zeitstempel (datumsfeld) intern auch nur eine Zahl ist, kannst du diese zum Nummerieren nutzen.SELECT
  (SELECT COUNT (*)
   FROM [Tabelle] AS Tab
   WHERE [Tab].[zeitstempel] < [Tabelle].[zeitstempel])+1 AS LaufNr, Zeitstempel
FROM Tabelle
ORDER BY Zeitstempel;
Gruß Steffen

accessdau

#2

Vielen Dank für die Antwort, probiere ich aus...

accessdau

Zitat von: steffen0815 am Dezember 29, 2020, 10:49:50Hallo,
da der Zeitstempel (datumsfeld) intern auch nur eine Zahl ist, kannst du diese zum Nummerieren nutzen.SELECT
  (SELECT COUNT (*)
   FROM [Tabelle] AS Tab
   WHERE [Tab].[zeitstempel] < [Tabelle].[zeitstempel])+1 AS LaufNr, Zeitstempel
FROM Tabelle
ORDER BY Zeitstempel;

Hallo, auf den ersten Blick sah das gut aus. Allerdings hab ich nun vereinzelt "Sprünge" in der Laufenden Nummer. D.h. am Ende ist die Laufende Nummer gräßer als die Anzahl der Datensätze. (Wenn auch nur gering) Woran könnte das liegen??

steffen0815

Hallo,
das Ganze funktioniert nur wenn der Zeitstempel eindeutig ist.
Allerdings sollten bei identischen Zeitstempel die Laufnummer kleiner als die Datensatzanzahl sein.
Gruß Steffen

accessdau

Zitat von: steffen0815 am Dezember 29, 2020, 10:49:50Hallo,
da der Zeitstempel (datumsfeld) intern auch nur eine Zahl ist, kannst du diese zum Nummerieren nutzen.SELECT
  (SELECT COUNT (*)
   FROM [Tabelle] AS Tab
   WHERE [Tab].[zeitstempel] < [Tabelle].[zeitstempel])+1 AS LaufNr, Zeitstempel
FROM Tabelle
ORDER BY Zeitstempel;

Funktioniert, die zusätzlichen Eigenschaften in der WHERE Klausel des COUNTs waren nicht sauber in Abfrage und Unterabfrage. Vielen Dank!!!