日期:2014-05-17  浏览次数:20473 次

ms sqlserver中的oreder by 问题
select * from(select row_number() over(order by itemId) as rowNum,* from item)as items
where rowNum between @begin and @end order by @pageOrder

select * from(select row_number() over(order by itemId) as rowNum,* from item)as items
where rowNum between 3 and 4 order by price desc

上面那种最后的order by 是个传过来的
报错:
由 ORDER BY 编号 1 标识的 SELECT 项包含一个变量,作为标识列位置的表达式的一部分。按照引用列名的表达式排序时,只允许使用变量。

下面是直接用列名,能查询出来, 请问谁能帮我看 第一个中怎么改啊

------解决方案--------------------
SQL code

CREATE TABLE  [学生表]
(
    学号 NVARCHAR(5) NOT NULL PRIMARY KEY,
    姓名 NVARCHAR(8),
    成绩 FLOAT
    )
INSERT INTO [学生表]
SELECT '003', '张三', 88 UNION ALL 
SELECT '004', '李四', 99 UNION ALL 
SELECT '005', '王五', 59 UNION ALL 
SELECT '006', '赵六', 49

DECLARE @var VARCHAR(10)
SET @var='成绩'
EXEC('SELECT * FROM [学生表] ORDER BY '+@var)