with t(客户, 品项, 日期, 分公司, 日销, 年销) AS ( SELECT 100, 1010, 20150501, 6000, 5, 25 UNION ALL SELECT 100, 1010, 20150504, 6000, 5, 40 UNION ALL SELECT 101, 1010, 20150501, 6150, 10, 100 UNION ALL SELECT 101, 1011, 20150501, 6150, 5, 50 UNION ALL SELECT 101, 1010, 20150506, 6150, 30, 230 UNION ALL SELECT 100, 1011, 20150503, 6000, 15, 60 ), t1(客户, 品项, 分公司, 起始日期, 结束日期) AS ( SELECT 客户, 品项, 分公司, MIN(日期), MAX(日期) FROM t GROUP BY 客户, 品项, 分公司 ), t2 AS ( SELECT t1.客户, t1.品项, t1.分公司, t1.起始日期, t1.结束日期 , t.日销 起始日销, t.年销 起始年销 , tt.日销 结束日销, tt.年销 结束年销 FROM t1 JOIN t ON t1.客户=t.客户 AND t1.品项=t.品项 AND t1.分公司=t.分公司 AND t1.起始日期=t.日期 JOIN t AS tt ON t1.客户=tt.客户 AND t1.品项=tt.品项 AND t1.分公司=tt.分公司 AND t1.结束日期=tt.日期 ), t3 AS ( SELECT 客户, 品项, 分公司 , 起始日期 日期, 起始日销 日销, 起始年销 年销 FROM t2 UNION ALL SELECT t2.客户, t2.品项, t2.分公司 , t3.日期+1 , (t2.结束年销-t2.结束日销-t2.起始年销)/(t2.结束日期-t2.起始日期-1) , t3.年销+(t2.结束年销-t2.结束日销-t2.起始年销)/(t2.结束日期-t2.起始日期-1) FROM t3 JOIN t2 ON t3.客户=t2.客户 AND t3.品项=t2.品项 AND t3.分公司=t2.分公司 WHERE (结束日期-起始日期)>2 AND t3.日期<t2.结束日期-1 ) SELECT 客户, 品项, 分公司, 日期, 日销, 年销 FROM t3 UNION ALL SELECT 客户, 品项, 分公司 , 结束日期 日期, 结束日销 日销, 结束年销 年销 FROM t2 WHERE 结束日期>起始日期 ORDER BY 客户, 品项, 分公司, 日期