可能であれば、任意のテーブルから値を返すt-sqlクエリが必要です。最初の行に値= 1、2番目の行に2などの増分整数列も返します。
この列は実際にはどのテーブルにも存在せず、厳密にインクリメンタルである必要があります。これは、ORDER BY句がテーブルの行をソートでき、常に完全な形のインクリメンタル行が必要になるためです...
前もって感謝します。
-編集申し訳ありませんが、SQL Server 2000で実行する必要があります。
SQL 2005以降
SELECT ROW_NUMBER() OVER( ORDER BY SomeColumn ) AS 'rownumber',*
FROM YourTable
2000年には、このようなことをする必要があります
SELECT IDENTITY(INT, 1,1) AS Rank ,VALUE
INTO #Ranks FROM YourTable WHERE 1=0
INSERT INTO #Ranks
SELECT SomeColumn FROM YourTable
ORDER BY SomeColumn
SELECT * FROM #Ranks
Order By Ranks
こちらもご覧ください 行番号
カスタム番号から開始し、そこから増分できます。たとえば、実行可能な支払いごとに小切手番号を追加します。
select @StartChequeNumber = 3446;
SELECT
((ROW_NUMBER() OVER(ORDER BY AnyColumn)) + @StartChequeNumber ) AS 'ChequeNumber'
,* FROM YourTable
各行に正しいチェック番号が付与されます。
ROW_NUMBER()を試してください
http://msdn.Microsoft.com/en-us/library/ms186734.aspx
例:
SELECT
col1,
col2,
ROW_NUMBER() OVER (ORDER BY col1) AS rownum
FROM tbl
くてパフォーマンスが悪いですが、技術的には、少なくとも1つの一意のフィールドを持つすべてのテーブルで機能し、SQL 2000でも機能します。
SELECT (SELECT COUNT(*) FROM myTable T1 WHERE T1.UniqueField<=T2.UniqueField) as RowNum, T2.OtherField
FROM myTable T2
ORDER By T2.UniqueField
注:このアプローチを使用してWHERE句を外側のSELECTに追加する場合、数値を連続させたい場合も内側のSELECTに追加する必要があります。