积木首页 - 学院 - 软件测试 - 技术百科 - 问答 - 黄页 - 手册 - 站长工具 - 社区
登录 | 注册
积木技术社区 » SqlServer » 求一个SQL语句
打印 楼主:yayahong 发表于 2010-07-15 06:23 [回复16次/有效14个,浏览223次]

求一个SQL语句

有一个表test:
货号 地区 入库时间 出库时间 分配前货架 分配后货架
123 beijing 09:10 09:40 0 1
156 beijing 09:15 09:45 0 2
223 shanghai 09:10 09:40 0 3
245 shanghai 09:15 09:45 0 4
256 shanghai 09:20 09:50 0 5
323 beijing 09:20 09:50 0 1
324 beijing 09:25 09:55 0 1
327 beijing 09:30 10:00 0 2
328 beijing 09:35 10:05 0 2
333 beijing 09:40 10:10 0 -1
425 shanghai 09:25 09:55 0 3
423 shanghai 09:30 10:00 0 3
424 shanghai 09:35 10:05 0 4
428 shanghai 09:40 10:10 0 4
433 shanghai 09:45 10:15 0 5
444 shanghai 09:50 10:20 0 5
555 shanghai 09:55 10:25 0 -1
要求:
用一个SQL语句,给上面这些货号分配货架。
规则是:
beijing的分给1和2两个货架,shanghai的分给3,4,5三个货架;
每个货号的出库时间和入库时间都是相差30分钟。
在地区相同时,按照每个货号的入库时间为顺序给每个货号分配货架。
要求第一次分配的时候,以每个货架上的货号不能有时间段上的重叠为原则,必须要给每个货号不同的货架。
剩下的分不到货架的货号先放着不管。
在第一次分配完成时,对剩下的那些分不到货架的货号再进行第二次分配。
第二次分配时,由于剩下的都是与已经得到货架的货号发生时间段的重叠冲突的货号,
要求分给货架时,每个货架的发生时间段的重叠冲突的货号最多不能超过3个,可以是3个。
换句话说,看起来是5个货架,实际上是15个货架。
在分配的时候,尽量把前一个货架(比如3号)分满了再接着分下一个货架(比如4号)。
最后,对还是分不到货架的货号分配给-1号货架。
所谓时间段重叠冲突指的是,比如09:10-09:40的时间段的货号,
那么任何一个入库时间大于09:10且小于09:40的货号都与其冲突,
或者任何一个出库时间大于09:10且小于09:40的货号都与其冲突,
还有地区和时间段都一样的货号上面表里没有列出来,这种情况也要排除。
意思是这样的,不知道有没有表述清楚。请帮帮忙,谢谢!
2楼 发表于 2010-07-15 09:41
Oh!My God!太复杂了~
3楼 发表于 2010-07-15 13:41
过零点的比如23:55-00:25的也要转换处理一下,谢谢!
4楼 发表于 2010-07-15 14:33
小技巧:教您如何更快获得可用分
5楼 发表于 2010-07-15 16:10
看看哦
6楼 发表于 2010-07-15 20:08
我不干~交给别人了~嘿嘿~
7楼 发表于 2010-07-15 22:44
初来乍到,分数实在不多,请帮帮忙,谢谢!
8楼 发表于 2010-07-15 23:05
太麻烦了吧
9楼 发表于 2010-07-15 23:14
总觉得这不应该是在数据库上做的事情
10楼 发表于 2010-07-16 03:35
SQL code
货号 地区 入库时间 出库时间 分配前货架 分配后货架
123 beijing 09:10 09:40 0 1
156 beijing 09:15 09:45 0 2
223 shanghai 09:10 09:40 0 3
245 shanghai 09:15 09:45 0 4
256 shanghai 09:20 09:50 0 5
323 beijing 09:20 09:50 0 1
324 beijing 09:25 09:55 0 1
327 beijing 09:30 10:00 0 2
328 beijing 09:35 10:05 0 2
333 beijing 09:40 10:10 0 -1
425 shanghai 09:25 09:55 0 3
423 shanghai 09:30 10:00 0 3
424 shanghai 09:35 10:05 0 4
428 shanghai 09:40 10:10 0 4
433 shanghai 09:45 10:15 0 5
444 shanghai 09:50 10:20 0 5
555 shanghai 09:55 10:25 0 -1
11楼 发表于 2010-07-16 07:21
看了晕,帮顶先
12楼 发表于 2010-07-16 10:13
晕了,慢慢看
13楼 发表于 2010-07-16 13:28
是的, 用存储过程好批处理,呵呵
14楼 发表于 2010-07-16 16:59
顶一个,呵
15楼 发表于 2010-07-16 20:07
晕了,不过个人觉得用存储过程会比较好
标题:
内容:

PHP: PHP技巧 - PHP基础 - PHP实例 - PHP错误代码 - 正则表达式 - 热门脚本语言: DOS命令 - vbs - CSS/HTML - python - perl - ruby - shell编程 - Powershell

JS: node.js - JS基础 - extjs - jQuery - JavaScript技巧

网址导航成语大全积木 TinyMCE 服务邮箱: Gimoohr(#)gmail.com
Copyright © 2008 Gimoo.Net  京ICP备05050695号