48

可能であれば、任意のテーブルから値を返す t-sql クエリが必要で、最初の行は値 = 1、2 番目の行は 2 などの増分整数列も返します。

この列は実際にはどのテーブルにも存在せず、厳密にインクリメンタルである必要があります。これは、ORDER BY 句でテーブルの行を並べ替えることができ、インクリメンタル行を常に完全な形にしたいためです...

前もって感謝します。

--EDIT 申し訳ありませんが、言及するのを忘れました。SQL Server 2000 で実行する必要があります。

4

4 に答える 4

74

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

ここも参照 行番号

于 2009-02-10T21:26:11.793 に答える
5

ROW_NUMBER() を試す

http://msdn.microsoft.com/en-us/library/ms186734.aspx

例:

SELECT
  col1,
  col2,
  ROW_NUMBER() OVER (ORDER BY col1) AS rownum
FROM tbl
于 2009-02-10T21:19:57.283 に答える
0

見苦しく、パフォーマンスも悪いですが、技術的には、これは少なくとも 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

注: このアプローチを使用して外側の SELECT に WHERE 句を追加する場合、数値を連続させたい場合は、内側の SELECT にも追加する必要があります。

于 2009-02-10T21:34:14.923 に答える