Frage:
Ich möchte bei einer Selektion zugleich eine fortlaufende Numerierung ausgeben (1, 2, 3, ...)
Antwort 1:
eine Möglichkeit besteht darin die ROW_NUMBER-Funktion zu nutzen
Beispiel:
SELECT TOP 100 A0RID, ROW_NUMBER() OVER(ORDER BY A0PlX) from tblTest ORDER BY A0RID
In diesem Beispiel wird die Spalte A0RID ausgelesen.
Weiters wird eine zusätzliche Spalte eingefügt welche eine fortlaufende Nummer ausgiebt.
In diesem Beispiel ist die Reighenfolge der fortlaufenden Nummer an das Feld A0PIX geknüfpt.
Die Ausgabe selbst wird nach A0RID sortiert.
Da nur die TOP 100 ausgegeben wird beginnt die Zahl nicht bei 1 sondern eben bei der Zahl die vorab in der Reihenfolge zugewiesen worden ist
Antwort 2:
Eine weitere Möglichkeit besteht darin eine Variable vom Type Tabelle anzulegen und diese automatisch fortlaufend zu füllen
Beispiel:
DECLARE @TBL TABLE (rownum int IDENTITY (1, 1) Primary key NOT NULL , A0RID char(32))
DECLARE @A0RID char(32)
DECLARE @RowCnt int = 1
DECLARE @MaxRows int
DECLARE @Dta datetime = getdate()
Insert into @TBL (A0RID)
select distinct A0RID from deleted F1 select @MaxRows=count(*) from @TBL
while @RowCnt <= @MaxRows
begin
select @A0RID = (Select A0RID from @TBL where rownum = @RowCnt)
exec dbo.CDBL_REPL_WRITE_CMD 'CDBL_trgInsertUpdateDeleteF1', 'FRZ_CDB_TO_TICWEB', @A0RID, 1 , '' , '' , '', @Dta, '0' , '0'
Select @RowCnt = @RowCnt + 1
end
In diesem Beispiel wird eine Tabelle um eine Spalte "rownum int IDENTITY (1, 1) Primary key NOT NULL " erweitert.
Beim Insert in diese Tabelle wird die Spalte automatisch gefüllt.
Beim durchlaufen der Tabelle kann dann ganz normal auf die Spalte zugegriffen werden.