sql server按表中的第一列排序

时间:2012-11-10 20:07:38

标签: sql sql-server sql-server-2008

exec ('select * from variable_table_name
order by @variable')

我正在尝试将动态sql语句放在一起,您可以在其中指定表名和排序列。如果我可以指定一个表名来使sql工作,那将是很好的。

如果没有指定@variable排序,有没有办法选择表的第一列进行排序?

3 个答案:

答案 0 :(得分:11)

您可以使用:

ORDER BY 1;

来自ORDER BY Clause (Transact-SQL)

  

order_by_expression - 指定要对查询结果集进行排序的列或表达式。可以将排序列指定为名称或列别名,或表示选择列表中列位置的非负整数

(强调我的)

答案 1 :(得分:1)

此脚本应该完成工作

DECLARE @tbl NVARCHAR(128)
DECLARE @col NVARCHAR(128)
DECLARE @sql NVARCHAR(MAX)

SET @tbl = 'MyTbl'
SET @col = '' --enter column name when required

IF @col = ''
BEGIN
    SET @sql = 'SELECT * FROM ' + @tbl + ' ORDER BY 1'
END
ELSE
    SET @sql = 'SELECT * FROM ' + @tbl + ' ORDER BY ' + @col

EXEC(@sql)

答案 2 :(得分:0)

像这样的东西(我用过Adventureworks作为例子): -

DECLARE @SORTCOLUMN varchar(50);

SET @SORTCOLUMN = 'OrganizationLevel';

IF @SORTCOLUMN IS NULL
    EXEC('SELECT * FROM HumanResources.Employee ORDER BY 1')
ELSE
    EXEC('SELECT * FROM HumanResources.Employee ORDER BY ' + @SORTCOLUMN)

将'SET @SORTCOLUMN'行默认为第一列