select * 
from table 
order by 是否验证过 desc,
         (  case when 是否验证过='是' 
                 then cast(日期 as varchar(20)) 
                 else 商品ID 
            end
         ) desc

解决方案 »

  1.   

    select * from (select  * from yourtable where 是否验证过='是' order by 日期 asc) a
    union 
    select * from (select  * from yourtable where 是否验证过='否' order by 商品ID desc) b
    order by 是否验证过 desc
      

  2.   

    select * from (select  * from yourtable where 是否验证过='是' order by 日期 asc) a
    union all
    select * from (select  * from yourtable where 是否验证过='否' order by 商品ID desc) b
    order by 是否验证过 desc
      

  3.   

    是否验证过设为bit类型(0或1)
    select * from t
     order by 是否验证过 desc,
      case 是否验证过 when 1 then convert(varchar(30),日期,120) else '9999-99-99' end,
      case 是否验证过 when 0 then id else 0 end
      

  4.   

    select * from [table ]
    order by case 是否验证过 when '是' then 0 else 1 end,
    case 是否验证过 when '是' then 日期 end,
    case 是否验证过 when '否' then 商品ID end
      

  5.   

    CReate Table #TB (SPID INT,BJ bit, Date Datetime)
    INSERT INTO #TB (SPID,BJ,Date)
    Select 1,0,'2004-5-25'
    UNION ALL Select 2,1,'2004-4-25'
    UNION ALL Select 3,0,'2004-6-25'
    UNION ALL Select 4,1,'2004-4-26'
    UNION ALL Select 5,0,'2004-4-27'
    Select * From #TB
    SELECT * FROM 
    (Select TOP 100 PERCENT * From #TB 
      Where BJ=1
      Order By Date) a
    UNION ALL
    Select * FROM 
    (Select TOP 100 PERCENT * From #TB
       Where BJ=0
       Order By SPID) bDrop Table #TB结果1 0 2004-05-25 00:00:00.000
    2 1 2004-04-25 00:00:00.000
    3 0 2004-06-25 00:00:00.000
    4 1 2004-04-26 00:00:00.000
    5 0 2004-04-27 00:00:00.000
    ---
    2 1 2004-04-25 00:00:00.000
    4 1 2004-04-26 00:00:00.000
    1 0 2004-05-25 00:00:00.000
    3 0 2004-06-25 00:00:00.000
    5 0 2004-04-27 00:00:00.000
      

  6.   

    通过学习了上面的写法,可以这样写:
    Select * From #TB
    order by
      case bj when 1 then bj end desc,
      case BJ when 1 then date end,
      case bj when 0 then spid end---
    2 1 2004-04-25 00:00:00.000
    4 1 2004-04-26 00:00:00.000
    1 0 2004-05-25 00:00:00.000
    3 0 2004-06-25 00:00:00.000
    5 0 2004-04-27 00:00:00.000
      

  7.   

    大家都很厉害 呵
    不过请问一下TABLE前面加个#是什么意思?