日期:2014-05-18 浏览次数:20497 次
生成一个日期表,然后使用左连接 select m.* , n.extend_CHJ ,n.extend_HSDY ,n.extend_SBQX from ( select 1 monthid , '2011-09-1' day_time union all select 2 monthid , '2011-09-2' day_time union all ... select 30 monthid , '2011-09-30' day_time ) m left join tb n on m.day_time = n.day_time
------解决方案--------------------
create table tb(month_id int,day_time datetime,extend_CHJ decimal(18,2),extend_HSDY decimal(18,2),extend_SBQX decimal(18,2)) insert into tb values(1 ,'2011-09-15 00:00:00.000', 435.00 ,435.00 ,345.00) insert into tb values(2 ,'2011-09-16 00:00:00.000', 2343.00 ,45.00 ,334.33) go --生成一个日期表,然后使用左连接 select m.* , n.extend_CHJ ,n.extend_HSDY ,n.extend_SBQX from ( select 1 monthid , '2011-09-01' day_time union all select 2 monthid , '2011-09-02' day_time union all select 3 monthid , '2011-09-03' day_time union all select 4 monthid , '2011-09-04' day_time union all select 5 monthid , '2011-09-05' day_time union all select 6 monthid , '2011-09-06' day_time union all select 7 monthid , '2011-09-07' day_time union all select 8 monthid , '2011-09-08' day_time union all select 9 monthid , '2011-09-09' day_time union all select 10 monthid , '2011-09-10' day_time union all select 11 monthid , '2011-09-11' day_time union all select 12 monthid , '2011-09-12' day_time union all select 13 monthid , '2011-09-13' day_time union all select 14 monthid , '2011-09-14' day_time union all select 15 monthid , '2011-09-15' day_time union all select 16 monthid , '2011-09-16' day_time union all select 17 monthid , '2011-09-17' day_time union all select 18 monthid , '2011-09-18' day_time union all select 19 monthid , '2011-09-19' day_time union all select 20 monthid , '2011-09-20' day_time union all select 21 monthid , '2011-09-21' day_time union all select 22 monthid , '2011-09-22' day_time union all select 23 monthid , '2011-09-23' day_time union all select 24 monthid , '2011-09-24' day_time union all select 25 monthid , '2011-09-25' day_time union all select 26 monthid , '2011-09-26' day_time union all select 27 monthid , '2011-09-27' day_time union all select 28 monthid , '2011-09-28' day_time union all select 29 monthid , '2011-09-29' day_time union all select 30 monthid , '2011-09-30' day_time ) m left join tb n on m.day_time = n.day_time drop table tb /* monthid day_time extend_CHJ extend_HSDY extend_SBQX ----------- ---------- -------------------- -------------------- -------------------- 1 2011-09-01 NULL NULL NULL 2 2011-09-02 NULL NULL NULL 3 2011-09-03 NULL NULL NULL 4 2011-09-04 NULL NULL NULL 5 2011-09-05 NULL NULL