数据库中有num1,num2,year,month,sum字段想求一复合语句:.... where year=当前年  and month=当前月-1 如果当前是1月份的话:... where year=当前年-1 and month=‘12’<这我已经实现了,最关键的是想还把在这个条件的基础上的月份-1的sum值也一起显示出来,最后的字段应该为:select num1,num2,year,month,sum,sum(当前月-2的值相当于) where ...非常感谢!

解决方案 »

  1.   

    实际上就是上一个月的num1,num2,year,month,sum和上上个月的sum字段。非常感谢
      

  2.   

    select num1,num2,year,month,sum, 
    (select sum from table_name
       where year = to_char(add_months(sysdate,-2),'yyyy') and month = to_char(add_months(sysdate,-2),'mm')
    )
    from table_name 
    where year = to_char(add_months(sysdate,-1),'yyyy') and month = to_char(add_months(sysdate,-1),'mm')
      

  3.   

    猫,是不是专来解答问题的呀。先谢谢了。。你那sum2我怎么得到呢,我想在select num1,num2,year,month,sum,sum2...
    <注:sum2是上上个月的>就是说那个嵌套的我想有个名称
      

  4.   

    忘记说了比较重要的一点我的要显示好几个sum值,也就是上上个月的要显示的字段有好多个。
      

  5.   

    select * from 
    (select num1,num2,year,month,sum, 
           lag(num1, 1, 0) over(order by year||month ) as pre_num1, 
           lag(num2, 1, 0) over(order by year||month ) as pre_num2, 
           lag(year, 1, 0) over(order by year||month ) as pre_year, 
           lag(month, 1, 0) over(order by year||month ) as pre_month, 
           lag(sum, 1, 0) over(order by year||month ) as pre_sum 
    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')
      

  6.   

    好像不太明白,大约是这个意思。我数据库中有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 这几个字段是上上个月的(这三个字段是从新起的名字)必须有一个名字,谢谢! ̄ ̄
      

  7.   

    实在是看不懂,你能帮忙写一吗?这是所有字段:
    dy_dcsw,lj_dcsw,dy_zr,lj_zr,dy_zr_qz,lj_zr_qz,dy_zc,lj_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上面的要都显示(上个月的),再加上下面的。这是要显示上上个月的字段:
    lj_dcsw,lj_zr,lj_zr_qz,lj_zc,lj_sdl,lj_sdl_qz,lj_xsdl,lj_xsl,lj_xsl_ys表名:分压线损表 可以再给开一给你加分啊。万分感谢
      

  8.   

    或者您有msn;我的是:[email protected]万万分感谢!
      

  9.   

    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')