求日期跟班次

snlixing 2017-10-07 10:12:54
前台输入框:

订单编号 订单总量 每班计划量 计划开始日期 开始班次

A1 1000 300 2017-10-9 早班
A2 1200 600 2017-10-10 晚班


后台怎么自动求出一共多少个班次,分早班和晚班,循环添加到数据库里面

得到结果:

订单编号 开始日期 开始班次 班计划量
A1 2017-10-9 早班 300
A1 2017-10-9 晚班 300
A1 2017-10-10 早班 100
A2 2017-10-10 晚班 600
A2 2017-10-11 早班 600

...全文
305 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自由自在_Yu 2017-10-10
  • 打赏
  • 举报
回复
order by 订单日期,订单编号,开始班次
文盲老顾 2017-10-10
  • 打赏
  • 举报
回复
纯数据库方法,自定义一个函数,用来分配工作量
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

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧