【发布时间】:2014-06-22 23:18:52
【问题描述】:
我怎样才能使它正确?我收到一条错误消息: 关键字“DESC”附近的语法不正确。
SELECT *
FROM Companies
Order By
CASE @OrderByField
WHEN 'CompanyName' THEN CompanyName
WHEN 'CreatedDate' THEN CreatedDate
END,
CASE @Direction
WHEN 'DESC' THEN DESC
WHEN 'ASC' THEN ASC
END
我不能有两个 case 语句吗?如果没有,我如何按字段和方向传递订单名称作为参数?
谢谢!
第一个问题解决后的另一个问题表面......
如果我包含一个没有字符串数据类型的字段,如果抛出错误。 例如:
SELECT *
FROM Companies
Order By
CASE @Direction WHEN 'DESC' THEN
CASE @OrderByField
WHEN 'CompanyName' THEN CompanyName
WHEN 'CreatedDate' THEN CreatedDate
WHEN 'Score' THEN Score
END
END DESC,
CASE @Direction WHEN 'ASC' THEN
CASE @OrderByField
WHEN 'CompanyName' THEN CompanyName
WHEN 'CreatedDate' THEN CreatedDate
WHEN 'Score' THEN Score
END
END ASC
@OrderByField 是 nvarchar(50) 的类型 假设 Score 的数据类型为 float。
即使我不尝试按分数字段排序,上面也会引发类似下面的错误。 将数据类型 nvarchar 转换为浮点数时出错。
同样,包含 createddate 会引发错误:Conversion failed when conversion of date and/or time from string.
如果有人能提供帮助,将不胜感激。
【问题讨论】:
-
如果您也能找到这方面的帖子,我将不胜感激!
-
在第一个链接上查看 LarsW 的回答,或在第二个链接上查看 gbn 的
case部分回答;这些似乎正是你所追求的? -
谢谢!这解决了我的问题! +1
标签: sql