在tsql select语句中自动增加子查询

时间:2012-01-19 19:55:01

标签: sql sql-server tsql sql-server-2000

我有一个T-SQL select语句,我想在其中自动增加一列(数据库中不存在)

select dbo.a, dbo.b, dbo.c, select @d:=1; @increment:=@increment+1 AS d

这可能吗?

2 个答案:

答案 0 :(得分:13)

假设您使用的是SQL 2005或更高版本:

SELECT dbo.a, dbo.b, dbo.c, ROW_NUMBER() OVER(ORDER BY GETDATE()) AS d

在从DB返回的行中对行进行排序。如果您想指定订单,可以这样做:

SELECT dbo.a, dbo.b, dbo.c, ROW_NUMBER() OVER(ORDER BY dbo.a) AS d

对于SQL 2000及更早版本,您需要一个唯一的值来按顺序排序:

SELECT dbo.a, dbo.b, dbo.c, (SELECT COUNT(*) FROM dbo d2 WHERE d2.a <= dbo.a) AS d
FROM dbo

或者如果您不需要一个SELECT:

SELECT IDENTITY(int,1,1) ID, dbo.a, dbo.b, dbo.c
INTO #Temp
FROM dbo

SELECT * FROM #Temp

答案 1 :(得分:1)

我认为你可以通过以下方式解决这个问题:

select dbo.a, dbo.b, dbo.c,  ROW_NUMBER() OVER (order by dbo.a) as d from somewhere;

我的回答是假设SQL Server 2005+,我认为D Stanley的回答会在2000年帮助你。