Januar 20, 2021, 13:14:23

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


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

Dezember 29, 2020, 12:16:10 #2 Letzte Bearbeitung: Dezember 29, 2020, 12:29:10 von MzKlMu Grund: Zitat gelöscht. Vollständiges Zitieren in direkter Antwort ist nicht nötig.

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