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 WHEREB.TIME + INTERVAL '1 MONTH' = A.TIME
建了两张临时表,然后就是说A表的值我作为的当月的值,B表的值我作为了上个月的值,我是用B表的时间加一个月匹配上A表的时间的。
我真正操作的话,我会把时间全部定义为那个月的一号,这样子方便加减。