我数据库中有10个字段吧,表如下:filed1,filed2,filed,3,filed4,filed5,filed6,filed7,filed8,year,month这样的。我想显示成这样的:
select filed1,filed2,filed3,filed4,file,5,filed6,file7,filed8,filed22,filed44,filed66  where...其中select filed1,filed2,filed3,filed4,file,5,filed6,file7,filed8这几个字段是条件为上个月的。filed22,filed44,filed66 这几个字段是上上个月的(这三个字段是从新起的名字)必须有一个名字,谢谢! ̄ ̄

解决方案 »

  1.   

    这里有一个问题注意,where year=当前年  and month=当前月-1如果当前为1月就变成了... where year=当前年-1 and month='12'
      

  2.   

    列举出点例子出来
    如果显示上个月的数据的时候 FILED22这些字段为空吗??
      

  3.   

    不太明白。
    field222是不是就是上上上个月啊?
      

  4.   


    select * from
    (select dy_dcsw,lj_dcsw,dy_zr,lj_zr,dy_zr_qz,lj_zr_qz,dy_zc,
    j_zc,dy_sdl,lj_sdl,dy_sdl_qz,lj_sdl_qz,dy_xsdl,lj_xsdl,
    dy_xsl,lj_xsl,dy_xsl_ys,lj_xsl_ys,
    --要求显示上个月的字段
    lag(lj_dcsw , 1, 0) over(order by year||month) as lj_dcsw1 ,
    lag(lj_zr , 1, 0) over(order by year||month) as lj_zr1 ,
    lag(lj_zr_qz , 1, 0) over(order by year||month) as lj_zr_qz1 ,
    lag(lj_zc , 1, 0) over(order by year||month) as lj_zc1 ,
    lag(lj_sdl , 1, 0) over(order by year||month) as lj_sdl1 ,
    lag(lj_sdl_qz, 1, 0) over(order by year||month) as lj_sdl_qz1,
    lag(lj_xsdl , 1, 0) over(order by year||month) as lj_xsdl1 ,
    lag(lj_xsl , 1, 0) over(order by year||month) as lj_xsl1 ,
    lag(lj_xsl_ys, 1, 0) over(order by year||month) as lj_xsl_ys1
    --要求显示上上个月的字段
    from table_name
    where year || month >= to_char(add_months(sysdate,-2),'yyyymm')
    and year || month <= to_char(add_months(sysdate,-1),'yyyymm')
    )
    where year || month = to_char(add_months(sysdate,-1),'yyyymm')
    where year = to_char(add_months(sysdate,-1),'yyyy') and month = to_char(add_months(sysdate,-1),'mm')