select  'R2', bh, 'R2',rownum rn  from dy_zd where fl='R2'

解决方案 »

  1.   

    to:bzszp(SongZip) 
    重复列可以使select语句简洁,如
    "select to_char(a.tbrq, 'YYYY-MM-DD') as tbrq, to_char(a.jzrq, 'YYYY-MM-DD') as jzrq, " +
        "a.*, b.bxgsmc, c.dwmc,a.bf1+a.bf2+a.bf3+a.bf4+a.bf5+a.bf6 as hj " +
    "from rc_bxdmx a, rc_bxgs b, jc_dwml c " +
    "where a.bxgsbh=b.bxgsbh and a.djh='" + djh + "' " +
        "and substr(a.dwdm,1,length('" + dwdm + "'))='" + dwdm + "' " +
        "and a.dwdm=c.dwdm"
    为了转换tbrq和jzrq为char这样做可以省去写出rc_bxdmx表中30个字段名的繁琐,查询结果在java里访问时对同名列默认取第一列to:beckhambobo(beckham)
    从上面的select语句可以看出,无法采用你的变通方法
      

  2.   

    select a.*, rownum as rn 
    from 
        ( select  fl, bh, fl '别名' 
            from  dy_zd 
           where  fl='R2'
        ) a
    就OK了
      

  3.   

    to :  verybigmouthz(大嘴智)
    我的情况还必须用数据库原字段名,不能用fl '别名'
      

  4.   

    在外层使用重复列,例如:
    select f1,bh,f1,rownum as rn from ( select  fl, bh from dy_zd where fl='R2')
      

  5.   

    同意 tsj68(tsj) 的说法!
    不过楼主这样做为什么实际的意义呢???
      

  6.   

    如果你的外层select只是增加了rownum的话,可以放在内层,省去了外层SQL。
      

  7.   

    同意tsj68(tsj) 的方法 
    直接, 如果有其他需要你也可以用
    select f1, bh, '别名' f1, rownum as rn 
    from 
        ( select  fl, bh, fl '别名' 
            from  dy_zd 
           where  fl='R2'
        ) a
    不过这样是不是有点多些一举呢
    呵呵
      

  8.   

    我的意图是这样的:
    原本我的查询是
    sqlStr = "select a.*, b.bxgsmc, c.dwmc,a.bf1+a.bf2+a.bf3+a.bf4+a.bf5+a.bf6 as hj 
    from rc_bxdmx a, rc_bxgs b, jc_dwml c 
    where a.bxgsbh=b.bxgsbh and a.djh='111' 
        and substr(a.dwdm,1,length('100'))='100' and a.dwdm=c.dwdm";
    其中a.*有30多个字段,但其中两个字段tbrq,jzrq为date类型,这种类型取到java环境里显示出来是连带小时分秒的,我想要的是YYYY-MM-DD的字符串,而在java里再做处理时要达到通用化就必须先判断字段的数据类型,增加了复杂性,所以采用oracle的to_char函数,于是查询语句写成
    sqlStr2 = "select to_char(a.tbrq, 'YYYY-MM-DD') as tbrq, to_char(a.jzrq, 'YYYY-MM-DD') as jzrq, a.*, b.bxgsmc, c.dwmc,a.bf1+a.bf2+a.bf3+a.bf4+a.bf5+a.bf6 as hj 
    from rc_bxdmx a, rc_bxgs b, jc_dwml c 
    where a.bxgsbh=b.bxgsbh and a.djh='111' 
        and substr(a.dwdm,1,length('100'))='100' and a.dwdm=c.dwdm";
    tbrq, jzrq都会取第一列
    然而为了打印处理,
    1、查询结果中不是所有的列都需要,用户会定义打印模版,从而选择他们需要的列进行显示
    2、肯定是分页打印,每打印一页就从数据库中查一页,而不是把几十万条纪录都查出来然后在java环境里选择一页进行打印
    所以sqlStr2变成
    sqlStr3 = "select 用户需要的字段, rownum as rn from (" + sqlStr2 + ") where rn>=1 and rn<=30"
    此时oracle报错:未明确定义列
    这种情况在系统里用的很多,所以要做成通用化的处理过程,于是产生我的问题