计算规则:case 到期日-起息日 a when a/12<3 then rate = 活期利率 when a1/2>3 and a/12<6 then 3个月内 rate=3个月定期*0.6 ,3个月外 rate = 活期利率 when a/12>6 and a/12<12 then 6个月内 rate=定期利率*0.6, 6个月外 rate = 活期利率 when a/12>12 and a/12<24 then 1年内 rate = 定期利率*0.6 ,1年外 rate =活期利率 when a/12>24 and a<36 then 2年内 rate = 定期利率*0.6,2年外 rate= 活期利率 when a/12>36 and a<60 then 3年内 rate = 定期利率*0.6, 3年外 rate = 活期利率 when a/12>60 then 5年内 rate = 定期利率*0.6, 5年外 rate =活期利率。
给你一个思路,就不都写出来了哈。。WITH test AS (SELECT sysdate sdate,sysdate-100 edate FROM dual), test2 AS (SELECT 0.3 利率,1 利率类型 FROM dual UNION ALL SELECT 0.15 ,2 FROM dual) SELECT (CASE WHEN K < 3 THEN (SELECT 利率 FROM test2 WHERE 利率类型=2) WHEN K > 3 AND K < 6 THEN 2 WHEN K > 6 AND K < 12 THEN 3 END) FROM (SELECT FLOOR(SDATE - EDATE) / 30 / 12 K FROM TEST)
when a/12<3 then rate = 活期利率
when a1/2>3 and a/12<6 then 3个月内 rate=3个月定期*0.6 ,3个月外 rate = 活期利率
when a/12>6 and a/12<12 then 6个月内 rate=定期利率*0.6, 6个月外 rate = 活期利率
when a/12>12 and a/12<24 then 1年内 rate = 定期利率*0.6 ,1年外 rate =活期利率
when a/12>24 and a<36 then 2年内 rate = 定期利率*0.6,2年外 rate= 活期利率
when a/12>36 and a<60 then 3年内 rate = 定期利率*0.6, 3年外 rate = 活期利率
when a/12>60 then 5年内 rate = 定期利率*0.6, 5年外 rate =活期利率。
首先你那个公司完全可以通过case when完成。
第二,如果想查另一个表去利率可以根据条件进行子查询。。
(SELECT sysdate sdate,sysdate-100 edate FROM dual),
test2 AS
(SELECT 0.3 利率,1 利率类型 FROM dual UNION ALL
SELECT 0.15 ,2 FROM dual)
SELECT (CASE
WHEN K < 3 THEN
(SELECT 利率 FROM test2 WHERE 利率类型=2)
WHEN K > 3 AND K < 6 THEN
2
WHEN K > 6 AND K < 12 THEN
3
END)
FROM (SELECT FLOOR(SDATE - EDATE) / 30 / 12 K FROM TEST)
如果想把两个利率拼接起来存入另一个表中,使用行转列函数WMSYS.WM_CONCAT就可以了