首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL两次排序。该怎么解决

2013-07-09 
SQL两次排序。select EVT.* ,DEV.DNM, DEV.AIfrom DEV inner join EVT ON EVT.DI DEV.DI where EVT.TM 2

SQL两次排序。
select EVT.* ,DEV.DNM, DEV.AI  from DEV inner join EVT 
ON EVT.DI =DEV.DI where EVT.TM >'2013-7-2 9:27:58' 
order by TM desc,case when EVT.DK ='false' then 1 else 0 end desc


表里有两个字段, 一个是TM(DATE),另一个是DK(bool )


首先按时间  降序。
然后 DK为false 的要排在前面。
[解决办法]
select EVT.* ,DEV.DNM, DEV.AI  from DEV inner join EVT 
ON EVT.DI =DEV.DI where EVT.TM >'2013-7-2 9:27:58' 
order by TM desc,evt.dk
[解决办法]


--> 测试数据:@T
declare @T table([TM] datetime,[DK] bit)
insert @T
select '2013-02-01',0 union all
select '2013-01-29',1 union all
select '2013-07-12',0 union all
select '2013-02-04',1 union all
select '2013-02-01',1

select * from @T ORDER BY [TM] DESC,[DK] 
--利用 RecordSet 将 bit 字段中的数据取出来后,它是 boolean 类型0(false)或1(true).
/*
TM                      DK
----------------------- -----
2013-07-12 00:00:00.000 0
2013-02-04 00:00:00.000 1
2013-02-01 00:00:00.000 0
2013-02-01 00:00:00.000 1
2013-01-29 00:00:00.000 1
*/

热点排行