日期:2014-05-17  浏览次数:20932 次

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

查询数据如下:


请高手们指点指点,感激不尽撒...
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)