解决方案 »
- OutLook 2003邮件同步问题
- 安装sqlserver 2005后的问题
- 求一个复杂的游标?请大哥们帮们啊!
- 帮忙修改一下update的语句。
- 在一个存储过程中调用另外一个存储过程,该怎么写?
- 关于SQL Server 索引存储位置。
- 求一个sql server的函数!
- htl258进来!~关于sql中IP地址转化成数值的问题!!!
- 做了一个数据库程序,实在是慢如牛啊! 请大侠帮我出点主意,该如何改进。
- sql server 2012下载与安装
- 执行SQL语法出错,at line 1 MySQL Errno:0 Message:MySQL Query Error
- SQL Server2008 返回计算结算不对
我自己把这类问题叫做“断点补全”,每个问题都有自己的特点,有不少类似的问题,
但是这类问题归根结底就是连续数据中间有“断点”
这里只提供个思路,就是先按照原始规律生成一张包含连续数据的表,然后再外连接
楼主可以参考这个,论坛上很多类似的问题
http://bbs.csdn.net/topics/390781130
create table #TA([DWeek] varchar(10),[Itemid] VARCHAR(10),[Qty] int)insert #TA
select 'W201420','A001',5
union all select 'W201421','A001',1
union all select 'W201422','A001',2
union all select 'W201426','A001',3
union all select 'W201427','A001',4
union all select 'W201430','A001',5
union all select 'W201421','A002',100
union all select 'W201429','A002',6
union all select 'W201430','A002',7
union all select 'W201431','A002',8
union all select 'W201432','A002',9
union all select 'W201433','A002',10
union all select 'W201437','A003',11
select a.DWeek,b.Itemid,isnull(c.Qty,0) 'Qty'
from
(select 'W2014'+rtrim(number) 'DWeek'
from master.dbo.spt_values
where type='P'
and number between (select min(right(DWeek,2)) from #TA)
and (select max(right(DWeek,2)) from #TA)) a
cross join (select distinct Itemid from #TA) b
left join #TA c on a.DWeek=c.DWeek and b.Itemid=c.Itemid
order by b.Itemid,a.DWeek/*
DWeek Itemid Qty
----------------- ---------- -----------
W201420 A001 5
W201421 A001 1
W201422 A001 2
W201423 A001 0
W201424 A001 0
W201425 A001 0
W201426 A001 3
W201427 A001 4
W201428 A001 0
W201429 A001 0
W201430 A001 5
W201431 A001 0
W201432 A001 0
W201433 A001 0
W201434 A001 0
W201435 A001 0
W201436 A001 0
W201437 A001 0
W201420 A002 0
W201421 A002 100
W201422 A002 0
W201423 A002 0
W201424 A002 0
W201425 A002 0
W201426 A002 0
W201427 A002 0
W201428 A002 0
W201429 A002 6
W201430 A002 7
W201431 A002 8
W201432 A002 9
W201433 A002 10
W201434 A002 0
W201435 A002 0
W201436 A002 0
W201437 A002 0
W201420 A003 0
W201421 A003 0
W201422 A003 0
W201423 A003 0
W201424 A003 0
W201425 A003 0
W201426 A003 0
W201427 A003 0
W201428 A003 0
W201429 A003 0
W201430 A003 0
W201431 A003 0
W201432 A003 0
W201433 A003 0
W201434 A003 0
W201435 A003 0
W201436 A003 0
W201437 A003 11(54 row(s) affected)
*/