服务器: 消息 145,级别 15,状态 1,行 1
如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。

解决方案 »

  1.   

    order by是排序呀!group by 是分组!
      

  2.   

    select * from (SELECT distinct mchanpintype,ztgif,zt FROM book where shenghe=1 and ztid=12 ) aa
    order BY 
    CASE WHEN mchanpintype like '%MP3型%' THEN 1
    WHEN mchanpintype like '%红外型%' THEN 2 
    WHEN mchanpintype like '%商务型%' THEN 3 
    WHEN mchanpintype like '%战斧型%' THEN 4 
    WHEN mchanpintype like '%智能备份%' THEN 5 
    END
    desc
      

  3.   

    你在case when  语句的最后面加一句else看看可不可以
      

  4.   

    考虑一下分两步写。
      如:
    SELECT mchanpintype,ztgif,zt INTO #tmp FROM book where shenghe=1 and ztid=12 
    ORDER BY 
    CASE WHEN mchanpintype like '%MP3型%' THEN 1
    WHEN mchanpintype like '%红外型%' THEN 2 
    WHEN mchanpintype like '%商务型%' THEN 3 
    WHEN mchanpintype like '%战斧型%' THEN 4 
    WHEN mchanpintype like '%智能备份%' THEN 5 
    END
    desc--------------------------------------------------------
    select distinct * from #tmp
    drop table #tmp
      

  5.   

    select * from (SELECT distinct mchanpintype,ztgif,zt FROM book where shenghe=1 and ztid=12)AA
    ORDER BY 
    CASE WHEN mchanpintype like '%MP3型%' THEN 1
    WHEN mchanpintype like '%红外型%' THEN 2 
    WHEN mchanpintype like '%商务型%' THEN 3 
    WHEN mchanpintype like '%战斧型%' THEN 4 
    WHEN mchanpintype like '%智能备份%' THEN 5 
    END
    desc
      

  6.   

    SELECT distinct mchanpintype,ztgif,zt FROM book where shenghe=1 and ztid=12 
    ORDER BY 
    CASE WHEN mchanpintype like '%MP3型%' THEN 1
    WHEN mchanpintype like '%红外型%' THEN 2 
    WHEN mchanpintype like '%商务型%' THEN 3 
    WHEN mchanpintype like '%战斧型%' THEN 4 
    WHEN mchanpintype like '%智能备份%' THEN 5 
    END,ztgif,zt
    desc