如果可能的話,我需要一個t-sql查詢,它返回來自任意表的值,也返回值爲1的遞增整數列第一行,第二行2,依此類推。MSSQL Select語句的增量整數列...不是來自表
此列實際上並不存在於任何表,並且必須嚴格增量,因爲ORDER BY子句可以在表中的行進行排序,我想在總是完美的造型增量排...
謝謝提前。
--edit 對不起,忘了提,必須SQL Server上運行2000
如果可能的話,我需要一個t-sql查詢,它返回來自任意表的值,也返回值爲1的遞增整數列第一行,第二行2,依此類推。MSSQL Select語句的增量整數列...不是來自表
此列實際上並不存在於任何表,並且必須嚴格增量,因爲ORDER BY子句可以在表中的行進行排序,我想在總是完美的造型增量排...
謝謝提前。
--edit 對不起,忘了提,必須SQL Server上運行2000
對於SQL 2005和up
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
看到這裏也Row Number
嘗試ROW_NUMBER()
http://msdn.microsoft.com/en-us/library/ms186734.aspx
例子:
SELECT
col1,
col2,
ROW_NUMBER() OVER (ORDER BY col1) AS rownum
FROM tbl
對不起,我忘了提及,必須運行SQL 2000 – Rodrigo 2009-02-10 21:25:59
這是醜陋的表現不好,但在技術上這適用於任何表至少有一個獨特的領域和工作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,如果你還想要的數字是 連續。
這將工作,但就像你已經提到的每行都必須掃描整個表,這也被稱爲運行計數 – SQLMenace 2009-02-10 21:38:07
你可以從那裏定製的數量和增量入手,比如你想添加一個支票號碼,每次付款,你可以這樣做:
select @StartChequeNumber = 3446;
SELECT
((ROW_NUMBER() OVER(ORDER BY AnyColumn)) + @StartChequeNumber) AS 'ChequeNumber'
,* FROM YourTable
會給每一行正確的校驗數。
不要忘記刪除臨時表 – 2009-02-10 21:37:42