我有一个要求,在一些进口,我有一个合同,在不同的时间段以不同的成本与多个批次。例如,你要求一个总金额为10万的租赁,分24个月支付,前10个月支付3250欧元,剩余14个月支付5625欧元。
我必须计算每年的支付成本。这意味着,第一年,我已经支付3250 * 10 + 5625 * 2(剩余的2个月,以关闭一年)。我如何在SQL中做到这一点?
CREATE TABLE T1 ( CODCTR VARCHAR2(20 CHAR),
FROMMONTH NUMBER(5),
TOMONTH NUMBER(5),
IMPORTO NUMBER(18,4) );
INSERT INTO T1 VALUES ('01',1,10,3250);
INSERT INTO T1 VALUES ('01',11,24,5625);
我想得到的是这样的结果。年付款=43750 ---> 10个月*3250 + 2个月5625。
如果你有一个表与月的列表。
CREATE TABLE M1 (CURMONTH NUMBER(5));
INSERT INTO M1 VALUES (1);
INSERT INTO M1 VALUES (2);
...
INSERT INTO M1 VALUES (12);
那么你可以把它连接到你的表。
SELECT *
FROM M1
JOIN T1 ON M1.curmonth BETWEEN t1.frommonth AND t1.tomonth;
这个连接有付款到期的月份。一旦你有,你可以很容易 SUM
的付款。
SELECT SUM(importo)
FROM M1
JOIN T1 ON M1.curmonth BETWEEN t1.frommonth AND t1.tomonth;
你甚至可以在飞行中创建有趣的月份的表格。
WITH m1 AS (SELECT LEVEL as curmonths FROM dual CONNECT BY LEVEL <= 12)
SELECT SUM(importo)
FROM t1 JOIN m1 ON m1.curmonths BETWEEN t1.frommonth AND t1.tomonth;