我有一种情况,我希望从时间排序表,但如果行的状态是假设 abc 我想通过状态按这些记录排序。 要求是所有空置记录需要显示在底部,然后在最高记录中我必须按时间显示记录asc。
状态为varchar,fromtime为十进制
例如状态 - 空置,占用,当前等
从时间 - 13.00,14.30,07.30等。
select * from tbluser order by case when [status]='vacant' then [status] else fromtime end
我收到以下错误
Conversion failed when converting the varchar value 'vacant' to data type int
我有2列,一列是整数,另一列是varchar。适用于varchar。但不是小数
但是当我使用以下条件时它会起作用
[从时间]是varchar-
Case When Status = 'Vacant' Then Status Else [from time] End
答案 0 :(得分:0)
在您的查询中使用强制转换为cast(fromtime as varchar)
所以你的查询变成了
select
*
from
tbluser
order by
case
when [status]='vacant' then [status]
else cast(fromtime as varchar) end
这是一篇可以帮助你的类似帖子
Understanding a Sql Server Query - CASE within an ORDER BY clause
答案 1 :(得分:0)
SELECT *
FROM tbluser
ORDER BY CASE
WHEN [status]='vacant' then [status]
ELSE CONVERT(VARCHAR(max), fromtime)
END