試試這個腳本:
use tempdb
GO
declare @date0 date, @date1 date, @date2 date, @date3 date
declare @hour0 int, @hour1 int, @hour2 int, @hour3 int
set @date0='20110910'
set @hour0=4
create table #tblSales(Item varchar(5), Color varchar(20), Size varchar(2), [Hour] tinyint, [Date] date, Sales int)
insert into #tblSales (Item, Color, Size, [Hour], [Date], Sales) values ('ABC', 'Yellow', 'S',0, '20110910', 432)
insert into #tblSales (Item, Color, Size, [Hour], [Date], Sales) values ('DEF', 'Red', 'M',0, '20110910',1324)
insert into #tblSales (Item, Color, Size, [Hour], [Date], Sales) values ('GHI', 'Blue', 'L',0, '20110910',567)
insert into #tblSales (Item, Color, Size, [Hour], [Date], Sales) values ('JKL', 'Tan', 'XL',0, '20110910',967)
insert into #tblSales (Item, Color, Size, [Hour], [Date], Sales) values ('MNO', 'Green', 'S',0, '20110910',457)
insert into #tblSales (Item, Color, Size, [Hour], [Date], Sales) values ('ABC', 'Yellow', 'L',4, '20110910',852)
insert into #tblSales (Item, Color, Size, [Hour], [Date], Sales) values ('ABC', 'Yellow', 'L',8, '20110909',1852)
--this part can be done in WHILE
set @[email protected]
set @[email protected]
if @hour1<0
begin
set @hour1=12
set @date1=DATEADD(dd,-1,@date0)
end
set @[email protected]
set @[email protected]
if @hour2<0
begin
set @hour2=12
set @date2=DATEADD(dd,-1,@date1)
end
set @[email protected]
set @[email protected]
if @hour1<0
begin
set @hour3=12
set @date3=DATEADD(dd,-1,@date2)
end
select t0.Item, t0.Color, t0.Size, t0.Sales,
cast(t0.Sales as float)/cast(t1.Sales as float) '4-hour diff',
cast(t0.Sales as float)/cast(t2.Sales as float) '8-hour diff',
cast(t0.Sales as float)/cast(t3.Sales as float) '12-hour diff'
from #tblSales t0
LEFT JOIN (select Item, Color, Sales from #tblSales where [Date][email protected] AND [Hour][email protected]) t1 on t0.Item=t1.Item and t0.Color=t1.Color
LEFT JOIN (select Item, Color, Sales from #tblSales where [Date][email protected] AND [Hour][email protected]) t2 on t0.Item=t2.Item and t0.Color=t2.Color
LEFT JOIN (select Item, Color, Sales from #tblSales where [Date][email protected] AND [Hour][email protected]) t3 on t0.Item=t3.Item and t0.Color=t3.Color
where t0.[Date][email protected]
AND t0.[Hour][email protected]
drop table #tblSales
謝謝,這幫助了很多。 – Reno
不客氣。 –