--我的表中只有三个字段: uidID uniqueidentifier; dtDate datetime ; szDescription nvarchar(max)--方法1declare @order nvarchar(30)set @order = 'dtDate'SELECT * FROM tb_productsORDER BY CASE @orderWHEN 'dtDate' THEN 2 WHEN 'uidID' THEN 1WHEN 'szDescription' THEN 3 ELSE NULL END DESC
我的想法是动态传递排序列名 , 然后进行排序.
我知道下面这样语句可以正确执行:
--方法2declare @order nvarchar(30)set @order = 'szDescription'SELECT * FROM tb_productsORDER BYCASE @order--WHEN 'dtDate' THEN CAST(dtDate AS varchar(50)) --根据 追索 的回答已经改为下面的WHEN 'dtDate' THEN Convert(varchar(10),dtDate,102) WHEN 'uidID' THEN CAST(uidID AS varchar(50)) WHEN 'szDescription' THEN szDescriptionELSE NULLEND DESC
现在的问题是用方法2 无法找到函数列 . 有谁能告诉我方法1错哪儿了吗?
- 7 回答
- 0 关注
- 857 浏览
添加回答
举报
0/150
提交
取消