CREATE TABLE SALES ( TYEAR NUMBER(4), TMONTH NUMBER(2), SALE_MONEY NUMBER(10, 2) ); PLSQL完成下方需求 查询数据起始月份到当前月的销售环比,环比=(本月-上月)/上月,结果输出 年份 月份 销售金额 环比
时间: 2024-03-21 08:41:00 浏览: 140
U201614577_CS1603_龙际全_前两次1
好的,我可以帮你编写这段PL/SQL代码。以下是代码:
```
DECLARE
CURSOR sales_cursor IS
SELECT tyear, tmonth, sale_money
FROM sales
WHERE TO_DATE(tyear || '-' || tmonth, 'YYYY-MM') BETWEEN TRUNC(SYSDATE, 'MM') - INTERVAL '11' MONTH AND TRUNC(SYSDATE, 'MM')
ORDER BY tyear, tmonth;
prev_month NUMBER(10, 2);
curr_month NUMBER(10, 2);
hb NUMBER(10, 2);
BEGIN
OPEN sales_cursor;
FETCH sales_cursor INTO prev_month;
DBMS_OUTPUT.PUT_LINE('年份' || CHR(9) || '月份' || CHR(9) || '销售金额' || CHR(9) || '环比');
WHILE sales_cursor%FOUND LOOP
FETCH sales_cursor INTO curr_month;
IF sales_cursor%FOUND THEN
hb := (curr_month - prev_month) / prev_month;
DBMS_OUTPUT.PUT_LINE(sales_cursor%ROWCOUNT || CHR(9) || sales_cursor%ROWTYPE.tyear || CHR(9) || sales_cursor%ROWTYPE.tmonth || CHR(9) || sales_cursor%ROWTYPE.sale_money || CHR(9) || hb);
prev_month := curr_month;
END IF;
END LOOP;
CLOSE sales_cursor;
END;
```
这段代码中,我们首先定义了一个游标,用于查询数据起始月份到当前月的销售数据。然后,我们在游标内部使用一个循环,依次处理每一条记录,并计算出对应的环比值。最后,我们将结果输出到控制台。请注意,本代码中的环比计算方式是基于上月而言的,而不是基于去年同期。如果需要基于去年同期计算环比,请将代码中的prev_month改为去年同期的销售金额即可。
阅读全文