不知道怎么写,一个根据日期段拆分数据的逻辑

zhujiawei7 2015-05-29 10:33:51
航班表
航班号 航班起始日期 航班截止日期
MU001 2015-1-20 2015-2-10
…………

折扣表
活动起始日期 活动截止日期 折扣
2015-1-1 2015-1-31 0.98
2015-2-1 2015-2-15 0.97
2015-2-16 2015-4-1 0.96
…………

界面想要展示的结果
航班号 航班起始日期 航班截止日期 折扣
MU001 2015-1-20 2015-1-31 0.98
MU001 2015-2-1 2015-2-15 0.97
…………
上面的例子,MU001跨了2个折扣日期段,所以拆成了2条,根据折扣日期拆分了航班日期,享受不同的折扣。如果航班的日期更长的,跨了折扣日期段更多,那拆分的条数也就更多。
难点就是我现在不知道,如果判断航班日期跨了哪几个折扣日期段,求大神指点。
...全文
431 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujiawei7 2015-05-29
  • 打赏
  • 举报
回复
引用 8 楼 wuhailin010 的回复:
结果: 是这样么?
意思是这个意思,但是你这么写有问题。你的测试数据航班跨了所有的折扣段,如果只跨了2个日期段呢? 你把航班日期改成2015-2-10试试,应该还关联出4条吧,正确应该是2条。 我觉得sql是很难完成这个需求的,还是要写代码
wuhailin010 2015-05-29
  • 打赏
  • 举报
回复



结果:

是这样么?
zhujiawei7 2015-05-29
  • 打赏
  • 举报
回复
引用 5 楼 feiyun0112 的回复:
所有时间你都得到了还做不出来吗? max(活动起始日期,航班起始日期 ) min(活动截止日期,航班截止日期 )
我不知道是我没理解你,还是你没理解我。。。 如我上面的MU001例子,原本航班日期是2015-1-20 2015-2-10跨了2个折扣日期段,所以将航班日期拆成了2条记录。 一条是2015-1-20 2015-1-31 0.98 一条是2015-2-1 2015-2-15 0.97 航班日期是被截断改变了的,以符合折扣日期
正宗熊猫哥 2015-05-29
  • 打赏
  • 举报
回复
嘿,LZ携程的么?
feiyun0112 2015-05-29
  • 打赏
  • 举报
回复
所有时间你都得到了还做不出来吗?

max(活动起始日期,航班起始日期 )
min(活动截止日期,航班截止日期 )
zhujiawei7 2015-05-29
  • 打赏
  • 举报
回复
不一定要用sql实现,用c#也行,只要前台能获得这个结果就行 我是想用DataTable,遍历DataRows去实现,但不知道这个日期判断的逻辑怎么写
白衣如花 2015-05-29
  • 打赏
  • 举报
回复
case then end。。。应该可以吧
zhujiawei7 2015-05-29
  • 打赏
  • 举报
回复
引用 1 楼 feiyun0112 的回复:
select * from 航班表,折扣表 where 活动起始日期<航班截止日期 and 活动截止日期>航班起始日期
你这肯定不对啊,就算折扣关联正确,但航班日期并没有拆分开来
feiyun0112 2015-05-29
  • 打赏
  • 举报
回复
select * from 航班表,折扣表
where 活动起始日期<航班截止日期
and 活动截止日期>航班起始日期
wuhailin010 2015-05-29
  • 打赏
  • 举报
回复


sql是可以改的嘛。。。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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