日期:2014-05-17  浏览次数:21023 次

求一个计算住宿天数的SQL语句
入住信息:
姓名    入住房间   入住日期
张三    A001       2013-3-1
李四    A001       2013-3-7
王五    A002       2013-3-4

宿舍调整信息:
姓名    原房间   新房间    调整入住日期
李四    A001     A002      2013-3-13
李四    A002     A003      2013-4-15
王五    A002     A001      2013-4-10


退宿信息:
姓名    退缩房间   退宿日期
王五    A001       2013-4-15

输入年份和月份(2013年3月份,或者2013年4月份),求每个人员在这个年份和月份在各个宿舍的住宿天数。

姓名     年     月    房间    住宿天数

谢谢。

------解决方案--------------------
其实我觉得你调整下表的结构,这个问题会更好解决。
就是把“宿舍调整”看成是对原来宿舍的“退订”和对新宿舍的“入住”,这样,无论是在表中记录时间段(开始时间和结束时间)还是记录时间点(对同一宿舍的开始和结束分别记录,而用类型区分),都会好处理的多吧?
当然,这是我的想法,可能你有你的具体业务需求。
如果像你现在这样存储,把“宿舍调整表”分拆为两行(退订和入住),应该是突破口吧,我先写一下,稍等。