【发布时间】:2009-04-15 13:16:19
【问题描述】:
我正在尝试在存储过程中使用动态顺序,因此我可以将希望数据返回到存储过程中的顺序作为参数传递。这适用于 VARCHAR 字段,但是如果我尝试对 int 或 datetime 字段进行排序,则会出错,我的代码如下
DECLARE @ORDERBY INT
SET @ORDERBY = 1
SELECT TOP 10 * FROM TBL_LMS_USERS_RECORDs_LAST_ATTEMPT
ORDER BY
CASE
WHEN @OrderBy = 1 THEN s10_record_dow
--WHEN @OrderBy = 2 THEN pk_big_record_id
else s10_record_dow
END
如果我取消注释 case 语句中的第二个 WHEN,则会出错
“将数据类型 varchar 转换为 bigint 时出错。”
如果我不使用 case 语句,我可以按此字段排序。
有什么想法吗?
【问题讨论】:
标签: sql sql-server