Oracle - WITH AS -用于查询当月与上月数据

注:在之前工作的时候,数据需要根据时间查询出当月值和上月的值。

语法:

WITH A AS(
SELECT * FROM TABLE
),
B AS (
SELECT * FROM TABLE
)
SELECT * FROM A,B

 注:个人理解为with后面跟着几张临时表,然后a为临时表名,可以有多张临时表,然后最后一个查询的表可以用临时表

例:

WITH A AS(
SELECT ID,TIME,SUM FROM TABLE
),
B AS (
SELECT ID,TIME,SUM FROM TABLE
)
SELECT A.ID,
A.TIME AS NOWTIME,A.SUM AS NOWSUM,
B.TIME AS LASTTIME,B.NUM AS LASTNUM
FROM A LEFT JOIN B ON A.ID=B.ID WHERE B.TIME + INTERVAL '1 MONTH' = A.TIME

 建了两张临时表,然后就是说A表的值我作为的当月的值,B表的值我作为了上个月的值,我是用B表的时间加一个月匹配上A表的时间的。

我真正操作的话,我会把时间全部定义为那个月的一号,这样子方便加减。

posted @ 2019-07-15 16:18  陈遛狗  阅读(1233)  评论(0编辑  收藏  举报