现在有一表格如下,包括 部门,年月,支出 3列,
我想找出 每个部门连续5个月以上支出费用持续保持下降的月份。部门 年月 支出(万)
A Jan-14 8
A Feb-14 2
A Mar-14 9
A Apr-14 8
A May-14 6
A Jun-14 5
A Jul-14 2

A Aug-14 12
A Sep-14 13
A Oct-14 11
A Nov-14 9
A Dec-14 5
B Jan-14 55
B Feb-14 61
B Mar-14 77
B Apr-14 66
B May-14 55
B Jun-14 44
B Jul-14 33
B Aug-14 22
B Sep-14 11

B Oct-14 54
B Nov-14 62
B Dec-14 58
比如上面的例子,可找出部门A从14年3月份到7月份支出是持续减少的;
部门B从14年3月份到9月份支出是持续减少的得出的结果应该如下
A Mar-14 9
A Apr-14 8
A May-14 6
A Jun-14 5
A Jul-14 2
B Mar-14 77
B Apr-14 66
B May-14 55
B Jun-14 44
B Jul-14 33
B Aug-14 22
B Sep-14 11
请求热心的朋友帮忙解答一下,谢谢。

解决方案 »

  1.   

    select a1.*
    from 有一表格 a1 inner join 有一表格 a2 on a1.部门=a2.部门 and a1.年月=a2.年月-1
    inner join 有一表格 a2 inner join 有一表格 a3 on a2.部门=a3.部门 and a2.年月=a3.年月-1
    inner join 有一表格 a3 inner join 有一表格 a4 on a3.部门=a4.部门 and a3.年月=a4.年月-1
    inner join 有一表格 a4 inner join 有一表格 a5 on a4.部门=a5.部门 and a4.年月=a5.年月-1
    where a1.支出<a2.支出
    and a2.支出<a3.支出
    and a3.支出<a4.支出
    and a4.支出<a5.支出
      

  2.   


    SELECT
      a1.*
    FROM t a1
      INNER JOIN t a2
        ON a1.部门 = a2.部门 AND a1.年月 = a2.年月 + 1
      INNER JOIN t a3
        ON a2.部门 = a3.部门 AND a2.年月 = a3.年月 + 1
      INNER JOIN t a4
        ON a3.部门 = a4.部门 AND a3.年月 = a4.年月 + 1
      INNER JOIN t a5
        ON a4.部门 = a5.部门 AND a4.年月 = a5.年月 + 1
    WHERE a1.支出 < a2.支出
    AND a2.支出 < a3.支出
    AND a3.支出 < a4.支出
    AND a4.支出 < a5.支出
    UNION
    SELECT
      a2.*
    FROM t a1
      INNER JOIN t a2
        ON a1.部门 = a2.部门 AND a1.年月 = a2.年月 + 1
      INNER JOIN t a3
        ON a2.部门 = a3.部门 AND a2.年月 = a3.年月 + 1
      INNER JOIN t a4
        ON a3.部门 = a4.部门 AND a3.年月 = a4.年月 + 1
      INNER JOIN t a5
        ON a4.部门 = a5.部门 AND a4.年月 = a5.年月 + 1
    WHERE a1.支出 < a2.支出
    AND a2.支出 < a3.支出
    AND a3.支出 < a4.支出
    AND a4.支出 < a5.支出
    UNION
    SELECT
      a3.*
    FROM t a1
      INNER JOIN t a2
        ON a1.部门 = a2.部门 AND a1.年月 = a2.年月 + 1
      INNER JOIN t a3
        ON a2.部门 = a3.部门 AND a2.年月 = a3.年月 + 1
      INNER JOIN t a4
        ON a3.部门 = a4.部门 AND a3.年月 = a4.年月 + 1
      INNER JOIN t a5
        ON a4.部门 = a5.部门 AND a4.年月 = a5.年月 + 1
    WHERE a1.支出 < a2.支出
    AND a2.支出 < a3.支出
    AND a3.支出 < a4.支出
    AND a4.支出 < a5.支出
    UNION
    SELECT
      a4.*
    FROM t a1
      INNER JOIN t a2
        ON a1.部门 = a2.部门 AND a1.年月 = a2.年月 + 1
      INNER JOIN t a3
        ON a2.部门 = a3.部门 AND a2.年月 = a3.年月 + 1
      INNER JOIN t a4
        ON a3.部门 = a4.部门 AND a3.年月 = a4.年月 + 1
      INNER JOIN t a5
        ON a4.部门 = a5.部门 AND a4.年月 = a5.年月 + 1
    WHERE a1.支出 < a2.支出
    AND a2.支出 < a3.支出
    AND a3.支出 < a4.支出
    AND a4.支出 < a5.支出
    UNION
    SELECT
      a5.*
    FROM t a1
      INNER JOIN t a2
        ON a1.部门 = a2.部门 AND a1.年月 = a2.年月 + 1
      INNER JOIN t a3
        ON a2.部门 = a3.部门 AND a2.年月 = a3.年月 + 1
      INNER JOIN t a4
        ON a3.部门 = a4.部门 AND a3.年月 = a4.年月 + 1
      INNER JOIN t a5
        ON a4.部门 = a5.部门 AND a4.年月 = a5.年月 + 1
    WHERE a1.支出 < a2.支出
    AND a2.支出 < a3.支出
    AND a3.支出 < a4.支出
    AND a4.支出 < a5.支出
    ORDER BY 部门, 年月年月使用类似201401格式