我正在尝试通过pubs数据库执行动态订单并获得以下错误
当我尝试使用@sort_order = 2
Msg 245,Level 16,State 1,Line 6 将nvarchar值'Pavlova'转换为数据类型int时,转换失败。
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 :(得分:2)
ProductID
,ProductName
和CategoryID
属于不同类型。 CASE的所有案例都需要评估为相同的类型。
查看此主题以获取其他选择:https://stackoverflow.com/a/751659/1373170
接受的答案(多个案例陈述)和ROW_NUMBER()
方法似乎都有效。