首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

生手求教oracle同比和环比sql语句

2013-08-06 
新手求教oracle同比和环比sql语句数据表create table d_month_salary(id number(2) primary key,salaryMon

新手求教oracle同比和环比sql语句
数据表
create table d_month_salary(
id number(2) primary key,
salaryMonth varchar2(10),
salary number(10));

查询数据如下:
生手求教oracle同比和环比sql语句

请高手们指点指点,感激不尽撒... Oracle
[解决办法]

select t.*, t.rowid from D_MONTH_SALARY t;

select t.salarymonth,
       sum(t.salary) / (select sum(t1.salary)
                          from D_MONTH_SALARY t1
                         where t1.salarymonth = (substr(t.salarymonth, 1, 4) - 1) 
[解决办法]

                               substr(t.salarymonth, -2)) "同比",
       sum(t.salary) /
       (select sum(t1.salary)
          from D_MONTH_SALARY t1
         where t1.salarymonth =
               to_char(to_date(t.salarymonth, 'yyyymm') - 1, 'yyyymm')) "环比"
  from D_MONTH_SALARY t
 group by t.salarymonth;

[解决办法]
先搞清同比和环比的概念:
同比是今年和去年同一个月份比较;环比是今年这个月份和上个月份比较。
上面这个兄台写得有点BUG,我修正一下:

/* Formatted on 2013/08/02 15:00 (Formatter Plus v4.8.7) */
SELECT   t.salarymonth,
           SUM (t.salary)
         / (SELECT SUM (t1.salary)


              FROM d_month_salary t1
             WHERE t1.salarymonth =
                         ((SUBSTR (t.salarymonth, 1, 4) - 1)
                      
[解决办法]
 SUBSTR (t.salarymonth, -2))) "同比",
           SUM (t.salary)
         / (SELECT SUM (t1.salary)
              FROM d_month_salary t1
             WHERE t1.salarymonth =
                      TO_CHAR (add_months(TO_DATE (t.salarymonth, 'yyyymm'),-1),
                               'yyyymm')) "环比"
    FROM d_month_salary t
GROUP BY t.salarymonth;

热点排行