SELECT * FROM tblUser ORDER BY CHARINDEX(userDepartment, '财务部,总经理室,商业客户,公司领导') DESC    SELECT * FROM tblUser ORDER BY CHARINDEX(userDepartment, '公司领导,商业客户,总经理室,财务部')  
都可以。

解决方案 »

  1.   

    CHARINDEX(a, b)
    返回a在b中的开始位置。按位置的顺序排列是对的。
      

  2.   

    建立一个部门排序级别表department:
    Department      部门
    orderid         排序级别  Department  orderid 
    公司领导       1
    商业客户       2
    总经理室       3
    财务部         4
    ......SELECT * FROM tblUser A left join department B 
      on A.userDepartment = Department ORDER BY B.orderid
      

  3.   

    你自己写的就可以呀。
    CHARINDEX
    返回字符串中指定表达式的起始位置
      

  4.   

    SELECT *,CHARINDEX(userDepartment, '公司领导,商业客户,总经理室,财务部') FROM tblUser ORDER BY CHARINDEX(userDepartment, '公司领导,商业客户,总经理室,财务部')  这样看一下你就明白了。:)
      

  5.   

    对的排部门是什么意思呢是不是 order by userDepartment
      

  6.   

    SELECT * FROM tblUser ORDER BY CHARINDEX(userDepartment, '财务部,总经理室,商业客户,公司领导') DESC 这个是对的,这个写法就是对的
      

  7.   

    select [name],left([name],1),CHARINDEX(left([name],1), '王李张')
    from employee
    where left([name],1) in ( '王','李','张')
    order by CHARINDEX(left([name],1), '王李张')
      

  8.   


    SELECT * FROM tblUser 
    ORDER BY 
    CASE userDepartment  WHEN '财务部' then 1
       WHEN '总经理室' then 2
       WHEN '商业客户' then 3
       WHEN '公司领导' then 4
    END  
      

  9.   

    谢谢大家的帮助,现在问题是:
    id   name     userDept
    1     a       公司领导
    2     b       公司领导
    3     c       总经理室
    SELECT * FROM tblUser ORDER BY CHARINDEX(userDepartment, '财务部,总经理室,商业客户,公司领导') DESC   
    这样写,“公司领导”会出现二次,我想一个部门出现一次,并且按给定部门顺序排列。
    加distinct 是不行了,因为已经使用了order by,我该如何写句子呢?
      

  10.   

    select * from tblUser tem where id=(select min(id) from tblUser where userDept=tem.userDept) ORDER BY CHARINDEX(userDepartment, '财务部,总经理室,商业客户,公司领导') DESC
      

  11.   

    排序后先写入一个临时表T,再从T中应用DISTINCT查询。