在复杂查询中按降序排序时出现转换错误。我将其归纳为以下内容:
DECLARE @sortBy VARCHAR(25) = 'Route'
DECLARE @sortDirection VARCHAR(25) = 'DESC'
select * from dbo.headers
order by case when @sortDirection = 'DESC' then
case
when @sortBy = 'Route' then route
when @sortBy = 'DateCompleted' then dateCompleted
end
end desc
奇怪的是,当我将顺序反转为升序时,它工作正常。如果我将
sortBy
变量更改为“DateCompleted”,它也可以正常工作。
希望能在这里提供一些意见,因为我至少花了几个小时试图弄清楚。
我尝试过颠倒排序顺序,效果很好。但我想按降序排列,导致转换错误。 dateCompleted 列是可为空的日期时间。
这可能是因为它试图将“路由”转换为 DATE 或 DATETIME 或“dateCompleted”的任何数据类型。
您可以尝试 CONVERT(NVARCHAR(30), dateCompleted, 121)