日期:2014-05-16  浏览次数:20453 次

如何进行排序 ???
T1表
menlei jibie kaiqi
普通       乙11     对开      
普通       1甲2     三七      
装饰       2装饰丙1 单开      
普通       3丙1     对开      
装饰       5乙2     单开      
装饰       7甲23    三七  

排序按照如下方式:  
普通---甲(单开、三七、对开逐个排序)
      乙(单开、三七、对开逐个排序)
      丙(单开、三七、对开逐个排序)
装饰---甲(单开、三七、对开逐个排序)
      乙(单开、三七、对开逐个排序)
      丙(单开、三七、对开逐个排序)    

其中jibie要按照模糊查询方式包含甲级、乙级、丙级方式排列,kaiqi不用即按单开、三七、对开排序顺序即可,求SQL排序?
上面T1表想要的排序结果如下
menlei jibie kaiqi
普通       1甲2     三七 
普通       乙11     对开
普通       3丙1     对开 
装饰       7甲23    三七
装饰       5乙2     单开       
装饰       2装饰丙1 单开  
  
     

------解决方案--------------------
--> 测试数据: [ta]
if object_id('[ta]') is not null drop table [ta]
go
create table [ta] ([menlei] varchar(4),[jibie] varchar(8),[kaiqi] varchar(4))
insert into [ta]
select '普通','乙11','对开' union all
select '普通','1甲2','三七' union all
select '装饰','2装饰丙1','单开' union all
select '普通','3丙1','对开' union all
select '装饰','5乙2','单开' union all
select '装饰','7甲23','三七'

select * from [ta]
order by menlei,
case when CHARINDEX('甲',jibie)>0 then 0 when CHARINDEX('乙',jibie)>0 then 1 when CHARINDEX('丙',jibie)>0 then 2 end,
CHARINDEX(kaiqi,'单开,三七,对开')


普通 1甲2 三七
普通 乙11 对开
普通 3丙1 对开
装饰 7甲23 三七
装饰 5乙2 单开
装饰 2装饰丙1 单开