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

问题描述

航班表航班号航班起始日期航班截止日期MU0012015-1-202015-2-10…………折扣表活动起始日期活动截止日期折扣2015-1-12015-1-310.982015-2-12015-2-150.972015-2-162015-4-10.96…………界面想要展示的结果航班号航班起始日期航班截止日期折扣MU0012015-1-202015-1-310.98MU0012015-2-12015-2-150.97…………上面的例子,MU001跨了2个折扣日期段,所以拆成了2条,根据折扣日期拆分了航班日期,享受不同的折扣。如果航班的日期更长的,跨了折扣日期段更多,那拆分的条数也就更多。难点就是我现在不知道,如果判断航班日期跨了哪几个折扣日期段,求大神指点。

解决方案

解决方案二:
select*from航班表,折扣表where活动起始日期<航班截止日期and活动截止日期>航班起始日期
解决方案三:
引用1楼feiyun0112的回复:

select*from航班表,折扣表where活动起始日期<航班截止日期and活动截止日期>航班起始日期

你这肯定不对啊,就算折扣关联正确,但航班日期并没有拆分开来
解决方案四:
casethenend。。。应该可以吧
解决方案五:
不一定要用sql实现,用c#也行,只要前台能获得这个结果就行我是想用DataTable,遍历DataRows去实现,但不知道这个日期判断的逻辑怎么写
解决方案六:
所有时间你都得到了还做不出来吗?max(活动起始日期,航班起始日期)min(活动截止日期,航班截止日期)
解决方案七:
嘿,LZ携程的么?
解决方案八:
引用5楼feiyun0112的回复:

所有时间你都得到了还做不出来吗?max(活动起始日期,航班起始日期)min(活动截止日期,航班截止日期)

我不知道是我没理解你,还是你没理解我。。。如我上面的MU001例子,原本航班日期是2015-1-202015-2-10跨了2个折扣日期段,所以将航班日期拆成了2条记录。一条是2015-1-202015-1-310.98一条是2015-2-12015-2-150.97航班日期是被截断改变了的,以符合折扣日期
解决方案九:
结果:是这样么?
解决方案十:
引用8楼wuhailin010的回复:

结果:是这样么?

意思是这个意思,但是你这么写有问题。你的测试数据航班跨了所有的折扣段,如果只跨了2个日期段呢?你把航班日期改成2015-2-10试试,应该还关联出4条吧,正确应该是2条。我觉得sql是很难完成这个需求的,还是要写代码
解决方案十一:
sql是可以改的嘛。。。

时间: 2024-10-20 10:00:37

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

c# net-用c#写一个方法提取某个电子表格数据信息,然后用gdi显示

问题描述 用c#写一个方法提取某个电子表格数据信息,然后用gdi显示 可以提取表格中的内容,但是不知道怎么画一个折线图, 分数 百分比 人数 0~9 0.0 0 10~19 2.6 2 20~29 3.9 3 30~39 7.8 6 40~49 10.4 8 50~59 20.8 16 60~69 26.0 20 70~79 13.0 10 80~89 11.7 9 90~99 3.9 3 77

问题标签用户 .NET 怎么写一个事物使更新集合数据到SQL数据库时有一个报错所有数据都不更新

问题描述 需要.NET写一个事物在更新集合数据(即多条数据)到SQL数据库时其中有一个报错则所有数据都不更新.方法如下,事物代码我应该怎么写publicvoidUpdateCollection(RequirementsPlanningCollectiondatas){foreach(varRequirementsPlanningindatas){Update(RequirementsPlanning);}} 解决方案 解决方案二:Update直接接收datas,在里面处理事务解决方案三:物件更新

.net-.NET 怎么写一个事物使更新集合数据到SQL数据库时有一个报错所有数据都不更新

问题描述 .NET 怎么写一个事物使更新集合数据到SQL数据库时有一个报错所有数据都不更新 需要.NET 写一个事物在更新集合数据(即多条数据)到SQL数据库时其中有一个报错则所有数据都不更新. 方法如下,事物代码我应该怎么写 public void UpdateCollection(RequirementsPlanningCollection datas) { foreach (var RequirementsPlanning in datas) { Update(RequirementsPl

有没有高手帮忙写一个简单的数据库录入数据的例子

问题描述 想要达到如下学习目的:1.绑定数据库2.从表单提交保存到数据库3.修改数据库记录4.删除数据库记录5.各个功能单独处理 解决方案 解决方案二: 解决方案三:使用动软代码生成器.自动生成这些代码解决方案四:这样的东西你还在问问题不知道你是业余选手还是自己懒解决方案五:顶楼上.哈哈,还是不帮你写了,否则下一次你还来问.还是回去看看书吧.凡是都有第一次的,第一次越困难,记忆越深.

ado.net-求一个无参数 调用存储过程的方法,我调用的是列转行的存储过程 但是访问数据库的方法不知道怎么写

问题描述 求一个无参数 调用存储过程的方法,我调用的是列转行的存储过程 但是访问数据库的方法不知道怎么写 访问数据不知道写 存储过程已经写好 解决方案 prepareCall()方法调用存储过程 解决方案二: use 数据库名称 这不是方法 解决方案三: use 数据库名称 用这个语句就能指向数据库 解决方案四: exec 存储过程名称

c语言-我想用定时和外部中断写一个小车避障程序,可是不知道哪里错了,求解答

问题描述 我想用定时和外部中断写一个小车避障程序,可是不知道哪里错了,求解答 5C #include#include#define uint unsigned int#define uchar unsigned charsbit echo=P3^2;sbit trig=P2^3;unsigned char stime; void PWM_zk0(float zk) //高电 平占得比例占空比为(Gao/255){ CCAP0H = CCAP0L =255*(100.0 - zk)/100.0;

c++写一个循环来查找指定进程 不知道该怎么写?求代码

问题描述 c++写一个循环来查找指定进程 不知道该怎么写?求代码 c++写一个循环来查找指定进程 不知道该怎么写?求代码 网上找了不少资料单老是编译出错 求大神指点 解决方案 用CreateToolhelp32Snapshot 参考:http://blog.csdn.net/zhongbin104/article/details/7867309 解决方案二: BOOL FindProcessByName(LPCTSTR szFileName, PROCESSENTRY32& pe) { // 采

回文-想让这段代码运行,之后不知道怎么写了,求大神,教教

问题描述 想让这段代码运行,之后不知道怎么写了,求大神,教教 bool IsPalindrome(const char s, int n) { // 非法输入 if (s == NULL || n < 1) { return false; } const char front,*back; // 初始化头指针和尾指针 front = s; back = s+ n - 1; while (front < back) { if (*front != *back) { return false; }

一个mysql问题,不知道怎么写了

问题描述 一个mysql问题,不知道怎么写了 SELECT u.name NAME, u.phone phone, i.level LEVEL, i.user_id, COUNT(1) total FROM t_user u,t_invitationcode i ,(SELECT COUNT(*),user_id FROM t_invitationcode it WHERE it.user_id=i.user_id) t3 WHERE u.id=i.user_id 不知道怎么写了 解决方案 子语