请大神帮忙解决车辆排班问题

weixin_38050362 2016-11-14 01:39:08
车辆排班表问题。头都想大了也不知道如何实现。   (1) 数据库原始数据 主键:不重复,派团编号:会重复(车是跟团走的),车牌号码:会重复(也可以看做车id值)。时间:在这个日期执行了运输任务。 下面的数据表示是车辆每天的日程安排。例如: 主键为id00 ~ id03的数据表示的意思是:云AL2203在2月11日到7月14日运输了派团编号为 ynkmd 的货物。 主键为id05 ~ id09的数据表示的意思是:云AL2203在2月14日到7月18日运输了派团编号为 MK-3的货物。   图一 CREATE TABLE [dbo].[行程表L]([主键] NVARCHAR(50) PRIMARY KEY NOT NULL ,[派团编号] NVARCHAR(50) NULL ,[车牌号] NVARCHAR(50) NULL ,[标题] NVARCHAR(50) NULL ,[时间] DATE NULL )   INSERT INTO [dbo].[行程表L]([主键],[派团编号],[车牌号],[标题],[时间]) VALUES('ID00','YnkMd','云AL2203','第1天','2016/02/11') ,('ID01','YnkMd','云AL2203','第2天','2016/02/12') ,('ID02','YnkMd','云AL2203','第3天','2016/02/13') ,('ID03','YnkMd','云AL2203','第4天','2016/02/14') ,('ID05','MK-3','云AL2203','第1天','2016/02/14') ,('ID06','MK-3','云AL2203','第2天','2016/02/15') ,('ID07','MK-3','云AL2203','第3天','2016/02/16') ,('ID08','MK-3','云AL2203','第4天','2016/02/17') ,('ID09','MK-3','云AL2203','第5天','2016/02/18') ,('ID10','Y-36','云AL2203','第1天','2016/02/18') ,('ID12','Y-36','云AL2203','第2天','2016/02/19') ,('ID13','Y-36','云AL2203','第3天','2016/02/20') ,('ID20','BJ5','云AL2203','第1天','2016/02/13') ,('ID21','BJ5','云AL2203','第2天','2016/02/14') ,('ID22','BJ5','云AL2203','第3天','2016/02/15') ,('ID23','BJ5','云AL2203','第4天','2016/02/16') ,('ID24','JD-1','云AL2203','第1天','2016/02/16') ,('ID25','JD-1','云AL2203','第2天','2016/02/17') ,('ID26','JD-1','云AL2203','第3天','2016/02/18') ,('ID28','JD-1','云AL2203','第4天','2016/02/19') ,('ID29','M326','贵AL2888','第1天','2016/02/14') ,('ID30','M326','贵AL2888','第2天','2016/02/15') ,('ID31','M326','贵AL2888','第3天','2016/02/16') ,('ID32','M326','贵AL2888','第4天','2016/02/17') ,('ID33','d1','贵AL2888','第1天','2016/02/11') ,('ID34','d1','贵AL2888','第2天','2016/02/12') ,('ID35','d1','贵AL2888','第3天','2016/02/13') ,('ID36','d1','贵AL2888','第4天','2016/02/14') ,('ID37','Y-37','贵AL2888','第1天','2016/02/17') ,('ID38','Y-37','贵AL2888','第2天','2016/02/18') ,('ID39','Y-37','贵AL2888','第3天','2016/02/19') ,('ID40','Y-37','贵AL2888','第4天','2016/02/20') ,('ID41','K324','云AL1314','第1天','2016/02/11') ,('ID42','K324','云AL1314','第2天','2016/02/12') ,('ID43','K324','云AL1314','第3天','2016/02/13') ,('ID44','K324','云AL1314','第4天','2016/02/14') ,('ID45','KMJ02','云AL1314','第1天','2016/02/15')   SELECT [主键],[派团编号],[车牌号],[标题],[时间] FROM [dbo].[行程表L] ORDER BY [车牌号] DESC,[主键] ASC     (2) 我想要的结果如下:   注:下面图中的颜色只是为了观看更直观,用数据无关   如果我检索2月11日到2月12日的日程安排的时候,车牌号码为 云AL2203的排班表只会有一条记录,且YnkMd 在第1行。如下   图二 如果我检索2月11日到2月13日的日程安排的时候,车牌号码为 云AL2203的排班表会有两条记录。且YnkMd 在第1行,BJ5在第2行。如下   图三 如果我检索2月11日到2月15日的日程安排的时候,车牌号码为 云AL2203的排班表会有三条记录。且MK-3在第1行,YnkMd 在第2行,BJ5在第3行,如下   图四 检索2月11日到2月19日的日程安排的时候,车牌号码为 云AL2203的排班表会有4条记录。BJ5 在3行,JD-1 在4行,MK-3 在1行,Y-36 在2行,YnkMd 在2行。如图二   图五 2月16日云AL2203 同时在3个地方出现(MK-3,BJ5,JD-1)   要求是只能用mysql,不能用游标,查询一个月记录表里面会有上万行记录,游标超级慢。   还想过一个办法如果在插入数据的时候计算这条数据所在行,也不行,因为检测日期段不同排班表所出现的行是不相同的。提前做的计算根本没用。   一直想了好几个月都没有好的办法,各位大神能不能帮忙想想办法。   为盼各位大神帮忙答疑解惑,在下感激不尽!!!  
...全文
12 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
相关推荐
发帖
其他技术讨论专区
创建于2021-05-12

120

社区成员

其他技术讨论专区
申请成为版主
帖子事件
创建了帖子
2016-11-14 01:39
社区公告
暂无公告