select p.p_code, p.c_name, nvl(r.p_code, 'N') as hasInfo from resume r, comp p where r.p_code(+)=p.p_code and p.dep_code='DEP04' and p.avail_flag='Y'  order by    hasInfo ,P.c_Name我想让它按照有无数据分组(没有的话 p_code = 'N') 然后按照名字排序执行结果如下        p_code          c_name  hasInfo 1 00000013 范海翔 00000013
2 00000021 杨建祥 00000021
3 00001039 刘仲山 00001039
4 00004002 周抗美 00004002
5 00004004 谢柱帮 00004004
6 00004005 倪尔亮 00004005
7 00004012 马爱兵 00004012
8 00004007 陈仁裕 N
9 00004013 范支才 N
10 00002002 孙恩友 N
11 00004008 张书成 N发现没有信息的那组名字是排序的,  有信息的那组名字还是乱序------------------------------------------------------------排序条件反下
select p.p_code, p.c_name, nvl(r.p_code, 'N') as hasInfo from resume r, comp p where r.p_code(+)=p.p_code and p.dep_code='DEP04' and p.avail_flag='Y'  order by    p.c_Name,hasInfo
执行结果如下1 00004007 陈仁裕 N
2 00000013 范海翔 00000013
3 00004013 范支才 N
4 00001039 刘仲山 00001039
5 00004012 马爱兵 00004012
6 00004005 倪尔亮 00004005
7 00002002 孙恩友 N
8 00004004 谢柱帮 00004004
9 00000021 杨建祥 00000021
10 00004008 张书成 N
11 00004002 周抗美 00004002
名字是排序了...但是没有按照有无信息分组..
怎么样才能解决我的问题呢?应该很简单吧...

解决方案 »

  1.   

    select
        p.p_code, p.c_name, nvl(r.p_code, 'N') as hasInfo 
    from
        resume r, comp p 
    where 
        r.p_code(+)=p.p_code and p.dep_code='DEP04' and p.avail_flag='Y'  
    order by
        decode(nvl(r.p_code,'N'),'N',2,1) ,p.c_Name 
      

  2.   

    select p.p_code, p.c_name, nvl(r.p_code, 'N') as hasInfo 
    from resume r, comp p 
    where r.p_code(+)=p.p_code and p.dep_code='DEP04' and p.avail_flag='Y'  
    order by    decode(r.p_code,'',2,1),P.c_Name 
      

  3.   

    1楼方法(decode(nvl(r.p_code,'N'),'N',2,1))很好,学习
      

  4.   

    不应该是  decode(nvl(r.p_code,'N'),'N',2,3) 吗, 为什么是 decode(nvl(r.p_code,'N'),'N',2,1)?
      

  5.   

    表达式的赋值我是明白了..但和排序有什么关系呢?order by 2? 2是指排序的条件条件的顺序吗?