不同的数据类型在SQL中按顺序排序

时间:2013-12-11 09:12:26

标签: asp.net sql sql-server sql-server-2008

我有一种情况,我希望从时间排序表,但如果行的状态是假设 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

2 个答案:

答案 0 :(得分:0)

在您的查询中使用强制转换为cast(fromtime as varchar)

所以你的查询变成了

 select 
       * 
 from 
       tbluser 
 order by 
       case 
           when [status]='vacant' then [status] 
           else cast(fromtime as varchar) end

编辑1

这是一篇可以帮助你的类似帖子

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