2012-11-03 36 views
1

我试图通过对pubs数据库做一个动态的秩序,得到以下错误 当我尝试使用@sort_order = 2动态订单通过转换错误

消息245,级别16,状态1,第6行 转换将nvarchar值“Pavlova”转换为数据类型int时失败。

This is the article

SELECT * FROM Paging 
WHERE seq > (@page_nbr - 1) * @page_size 
    AND seq <= @page_nbr * @page_size 
ORDER BY CASE 
    WHEN @sort_order = 1 THEN ProductID 
    WHEN @sort_order = 2 THEN ProductName 
    ELSE CategoryID 
END 
+0

传递给查询的参数“@ sort_order”的值是什么? –

+0

oops,更新OP。谢谢。 – Rod

回答

2

ProductIDProductName,和CategoryID是不同类型的。 CASE的所有案例都需要评估相同的类型。

退房此线程其他办法:https://stackoverflow.com/a/751659/1373170

两个公认的答案(多case语句)和ROW_NUMBER()方法似乎有效。