求数据库大神解决排版问题

[复制链接]
查看11 | 回复1 | 2021-1-27 05:44:11 | 显示全部楼层 |阅读模式
车辆排班表问题。头都想大了也不知道如何实现。
(1)数据库原始数据
主键:不重复,派团编号:会重复(车是跟团走的),车牌号码:会重复(也可以看做车id值)。时间:在这个日期执行了运输任务。
下面的数据表示是车辆每天的日程安排。例如:
主键为id00~id03的数据表示的意思是:云AL2203在2月11日到7月14日运输了派团编号为ynkmd的货物。
主键为id05~id09的数据表示的意思是:云AL2203在2月14日到7月18日运输了派团编号为MK-3的货物。

图一
CREATETABLE[dbo].[行程表L]([主键]NVARCHAR(50)PRIMARYKEYNOTNULL
,[派团编号]NVARCHAR(50)NULL
,[车牌号]NVARCHAR(50)NULL
,[标题]NVARCHAR(50)NULL
,[时间]DATENULL
)
INSERTINTO[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]ORDERBY[车牌号]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,不能用游标,查询一个月记录表里面会有上万行记录,游标超级慢。
还想过一个办法如果在插入数据的时候计算这条数据所在行,也不行,因为检测日期段不同排班表所出现的行是不相同的。提前做的计算根本没用。
一直想了好几个月都没有好的办法,各位大神能不能帮忙想想办法。
为盼各位大神帮忙答疑解惑,在下感激不尽!!!

分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:44:11 | 显示全部楼层
没人回复啊,自己顶个楼,期待中........
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行