In meiner SQL-Server-Datenbank gibt es eine Tabelle, in der jeder Tag viele Einträge für jeden Zeitwert (in ganzzahliger Form zB 800 -> 08:00) mit unterschiedlichen Beträgen hat und ein eindeutiges ID-Feld.Ergebnisse der sql while-Schleife in einer einzigen Tabelle anzeigen
Meine Tabelle sieht wie folgt aus:
ID NTIME AMOUNT
8426628 828 531.81
8426629 828 782.61
8426630 829 183.41
8426631 829 183.41
8426632 829 832.41
8426633 829 32.41
8426634 830 374.41
8426635 830 78.41
8426636 830 628.41
Als Ergebnis habe ich die Zeilen mit dem Maximum-ID für jede einzelne Zeitwert erhalten möchten, wie folgt aus:
ID NTIME AMOUNT
8426629 828 782.61
8426633 829 32.41
8426636 830 628.41
ich versucht habe, die folgende Abfrage:
DECLARE @t int=815;
WHILE @t<=830
BEGIN
select ID, NTIME, AMOUNT FROM <my_table> WHERE
[email protected] and
ID =
(select max(ID) FROM <my_table> where [email protected]);
Set @t = @t + 1;
END
Welche die richtigen Ergebnisse abruft, aber jedes ausgewählte Abfrageergebnis ist d in einer anderen Tabelle abgespielt (Ergebnis 1-1, Ergebnis 1-2 etc.). Gibt es eine Möglichkeit, die Ergebnisse in einer einzigen Ergebnistabelle zu erhalten, vorzugsweise ohne eine temporäre Tabelle zu erstellen?
Nur als ein Punkt der pedantischen Klärung :-), ist es ein Missverständnis, dass CTEs muss ein Semikolon vorangestellt werden. Das Semikolon beendet die vorherige Anweisung (von der es in diesem Beispiel keine gibt). Beachten Sie auch, dass 'row_number()' keine Ranking-Funktion ist. 'rank()' und 'dose_rank()' sind. Ihre Daten sind weniger anfällig für Fehlinterpretationen, wenn Sie diese Spalte nicht rnk aufrufen. Etwas wie Seq oder Sequence_number könnte eine bessere Option sein. – DatumPoint