|
我假设你都是日期型数据,如果不是自己用TO_DATE去转换:
SELECT SUM(积数* LEAST(结束日期,v_end_date) - GREATEST(开始日期, v_start_date) )
FROM MY_TABLE
WHERE 结束日期>v_start_date
AND 开始日期<v_end_date;
第二个问题:原理是这样,你自己可以写出变种,比如不用DUAL用你自己的表:
SELECT v_start_date+LEVEL-1 AS MY_DATE
FROM DUAL
CONNECT BY LEVEL<=v_end_date - v_start_date +1;
|