--> 测试数据: [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 单开

解决方案 »

  1.   

    回复楼上,如表数据是下面的,只是最后又增加了两条,上面的语句好像就不行了,kaiqi,'单开,三七,对开' 排序不对
    menlei jibie kaiqi
    普通       乙级11     对开      
    普通       1甲级2     三七      
    装饰       2装饰丙级1 单开      
    普通       3丙级1     对开      
    装饰       5乙级2     单开      
    装饰       7甲级23    三七      
    普通       1甲级      单开      
    普通       1甲级      对开 
    正常排序结果如下:
    menlei jibie kaiqi
    普通       1甲级      单开      
    普通       1甲级2     三七
    普通       1甲级      对开 
    普通       乙级11     对开
    普通       3丙级1     对开
    装饰       7甲级23    三七
    装饰       5乙级2     单开      
    装饰       2装饰丙级1 单开