问高手SQL写法, 补齐时间.
表和数据脚本:
CREATE TABLE [dbo].[TabPrice](
[ID] [int] NOT NULL,
[matnr] [nchar](10) NULL,
[mdate] [date] NULL,
[price] [int] NULL)
CREATE TABLE [dbo].[TabDate](
[mdate] [date] NOT NULL)
INSERT INTO[TabPrice]
values (100,'A01','2014-08-01',23)
INSERT INTO[TabPrice]
values (101,'A02','2014-08-05',43)
INSERT INTO[TabPrice]
values (102,'A02','2014-08-07',50)
insert into tabdate
values ('2014-08-01')
insert into tabdate
values ('2014-08-02')
insert into tabdate
values ('2014-08-03')
insert into tabdate
values ('2014-08-04')
insert into tabdate
values ('2014-08-05')
insert into tabdate
values ('2014-08-06')
insert into tabdate
values ('2014-08-07')
insert into tabdate
values ('2014-08-08')
insert into tabdate
values ('2014-08-09')
insert into tabdate
values ('2014-08-10')
现在想实现的功能:把NULL值,用最近一次日期对应的值,补充上去.
select b.ID,b.matnr,b.mdate,b.price
from dbo.tabdate as a left join dbo.TabPrice as b
on a.mdate = b.mdate
出来有很多NULL值,
100 A01 2014-08-01 23
NULL NULL NULL NULL
NULL NULL NULL NULL
NULL NULL NULL NULL
101 A02 2014-08-05 43
NULL NULL NULL NULL
102 A02 2014-08-07 50
NULL NULL NULL NULL
NULL NULL NULL NULL
NULL NULL NULL NULL
想要的结果是:
100 A01 2014-08-01 23
100 A01 2014-08-02 23
100 A01 2014-08-03 23
100 A01 2014-08-04 23
101 A02 2014-08-05 43
101 A02 2014-08-06 43
102 A02 2014-08-07 50
也就是8.1号 - 5号之间,用1号的数据自动填充到2号,3号,4号。 注意,1号可能有多条件记录., 如果有多条记录,那么2号也是多条记录。
求高手!!!