这么查询的时候,发现000在最下面,怎么让他在下拉列表的最上面啊.怎么改啊.sql的语法用到的希望再说一下...

解决方案 »

  1.   

    SELECT '' AS deptCD, 
           '000' AS deptName 
     FROM DUAL 
     UNION SELECT DEPT_CD AS deptCD, 
                  DEPT_NM AS deptName 
           FROM   THO01M 
           WHERE  abl_dt=to_date('9999-12-31','yyyy-mm-dd') 
             AND  use_flag = 'Y' 
             AND  SECT_CD = 'SDF00'
      

  2.   

    不知道这样行不行  我这没ORACLE环境 没试
    SELECT * FROM (
    SELECT   ''   AS   deptCD,  
                  '000'   AS   deptName  
      FROM   DUAL  
      UNION   SELECT   DEPT_CD   AS   deptCD,  
                                DEPT_NM   AS   deptName  
                  FROM       THO01M  
                  WHERE     abl_dt=to_date('9999-12-31','yyyy-mm-dd')  
                      AND     use_flag   =   'Y'  
                      AND     SECT_CD   =   'SDF00'
    ) ORDER BY deptCD
      

  3.   

    举个例子说吧,10和2,如果字段是varchar2型,那么排序的结果是10在前,2在后。如果是number型,那么排序是2在前,10在后。因此上面的sql语句应该写成
    SELECT * FROM 
    (SELECT   ''   AS   deptCD,   
                  '000'   AS   deptName   
      FROM   DUAL   
      UNION   SELECT   DEPT_CD   AS   deptCD,   
                                DEPT_NM   AS   deptName   
                  FROM       THO01M   
                  WHERE     abl_dt=to_date('9999-12-31','yyyy-mm-dd')   
                      AND     use_flag   =   'Y'   
                      AND     SECT_CD   =   'SDF00')
    ORDER BY TO_NUMBER(deptName);
      

  4.   

    我自己搞定了,只要在后面加desc就可以了
      

  5.   

    把“UNION”改为“UNION ALL”即可,效率最高。
      

  6.   

    你都是固定的,还要用SQL干什么。赫赫。其实,假如你的数据会出现文字比较比'000' 小的话,你的结果集还是不对。非要用你自己的做法的话,不如新追加一列,'000' 的时候,是1,从THO01M  里面去的时候,用2,
    对这个新的列来排序。
    可以保证肯定正确的。