用Oracle编写a表、b表、c表分别表示当月、上月、上上月的数据,这三个表中都有字段fee费用、user_id,现在想求近三个月总共费用
时间: 2024-09-26 08:10:16 浏览: 28
在Oracle数据库中,如果你想要查询过去三个月(当前月、上个月和上上个月)的总费用(fee),可以创建三个临时表a_table、b_table和c_table,并将数据插入其中。这里假设你已经有了原始的数据源,但为了演示,我会给出如何构造这些表并计算总费用的基本步骤。
首先,我们需要为每个表添加日期字段,例如`date_month`:
```sql
CREATE GLOBAL TEMPORARY TABLE a_table (
fee NUMBER(10, 2),
user_id NUMBER,
date_month DATE DEFAULT SYSDATE - INTERVAL '1 MONTH'
);
CREATE GLOBAL TEMPORARY TABLE b_table LIKE a_table;
CREATE GLOBAL TEMPORARY TABLE c_table LIKE a_table;
-- 假设你已经有了历史数据,替换下面的INSERT语句
INSERT INTO a_table (fee, user_id) SELECT fee, user_id FROM your_data WHERE DATE_COLUMN BETWEEN SYSDATE AND SYSDATE - INTERVAL '2 MONTH';
INSERT INTO b_table (fee, user_id) SELECT fee, user_id FROM your_data WHERE DATE_COLUMN BETWEEN SYSDATE - INTERVAL '1 MONTH' AND SYSDATE - INTERVAL '3 MONTH';
INSERT INTO c_table (fee, user_id) SELECT fee, user_id FROM your_data WHERE DATE_COLUMN BETWEEN SYSDATE - INTERVAL '2 MONTH' AND SYSDATE - INTERVAL '3 MONTH';
-- 现在我们可以计算总费用
SELECT
SUM(a_table.fee) + SUM(b_table.fee) + SUM(c_table.fee) AS total_fee
FROM
a_table
UNION ALL
SELECT SUM(fee) FROM b_table
UNION ALL
SELECT SUM(fee) FROM c_table;
```
阅读全文