28,391
社区成员
发帖
与我相关
我的任务
分享
CREATE FUNCTION temp_row
(
@st date,@total int,@plan int,@w bit
)
RETURNS
@table TABLE
(
id int identity,工作日期 date,工作量 int,班次 bit
)
AS
BEGIN
declare @d date,@c bit
select @d=@st,@c=@w
while @total>@plan
begin
insert into @table(工作日期,工作量,班次) values(@d,@plan,@c)
select @total = @total - @plan,@d=(case when @c=1 then dateadd(d,1,@d) else @d end),@c=@c-1
end
insert into @table(工作日期,工作量,班次) values(@d,@total,@c)
RETURN
END
GO
declare @tb table(id int identity,订单编号 varchar(2),订单总量 int,每班计划量 int,计划开始日期 date,开始班次 bit)
insert into @tb(订单编号,订单总量,每班计划量,计划开始日期,开始班次)
values('a1',1000,300,'2017-10-9',0),('a2',1200,600,'2017-10-10',1)
select * from @tb a
cross apply(
select * from dbo.temp_row(计划开始日期,订单总量,每班计划量,开始班次)
) c
drop function temp_row