Mysql 基于重叠日期范围的两个表中的维恩图行

Mysql 基于重叠日期范围的两个表中的维恩图行,mysql,sql,sql-server,Mysql,Sql,Sql Server,最后更新并澄清 我有两个表,希望以venn图的方式将它们连接起来,以便得到下面的结果集。如果表2中的日期范围中有一行,我希望覆盖金额,一旦我弄清楚如何链接这两个表,我就可以计算出该部分 表1 客户开始日期结束日期金额说明 10 9/1/14 9/5/14 100左右 10 9/6/14 9/30/14 200无 20 9/1/14 9/25/14 50另一件事 表2 客户开始日期结束日期金额 10 9/4/14 9/20/14 150 20 9/

最后更新并澄清

我有两个表,希望以venn图的方式将它们连接起来,以便得到下面的结果集。如果表2中的日期范围中有一行,我希望覆盖金额,一旦我弄清楚如何链接这两个表,我就可以计算出该部分

表1 客户开始日期结束日期金额说明 10 9/1/14 9/5/14 100左右 10 9/6/14 9/30/14 200无 20 9/1/14 9/25/14 50另一件事

表2 客户开始日期结束日期金额 10 9/4/14 9/20/14 150 20 9/15/14 9/30/14 300

结果 客户开始日期结束日期金额说明 10 9/1/14 9/3/14 100左右 10 9/4/14 9/5/14 150左右 10 9/6/14 9/20/14 150无 10 9/21/14 9/30/14 200无 20 9/1/14 9/14/14 50另一件事 20 9/15/14 9/25/14 300另一件事

我不需要在表2中而不是表1中扩展了日期范围的记录

更新并澄清 如果我只做左外连接或全外连接,我只得到3个结果,而不是6个:

为了简化起见,我将开始日期写为SD,结束日期写为ED等等

此声明

SELECT a.Client, a.SD, a.ED, a.Amount, b.SD, b.ED, b.Amount
FROM [Table 1] AS a FULL OUTER JOIN
[Table 2] as b on a.Client=b.Client
AND a.SD<=b.ED AND a.ED>=b.SD
结果如下 客户a.SD a.ED a.金额b.SD b.ED b.金额 10 9/1/14 9/5/14 100 9/4/14 9/20/14 150 10 9/6/14 9/30/14 200 9/4/14 9/20/14 150 20 9/1/14 9/25/14 50 9/15/14 9/30/14 300

当我想象第一步可能是: 客户a.SD a.ED a.金额b.SD b.ED b.金额 10 9/1/14 9/5/14 100 10 9/1/14 9/5/14 100 9/4/14 9/20/14 150 10 9/6/14 9/30/14 200 9/4/14 9/20/14 150 10 9/6/14 9/30/14 200 20 9/1/14 9/25/14 50 20 9/1/14 9/25/14 50 9/15/14 9/30/14 300

然后最终能够将该结果转换为: 客户付款金额 10 9/1/14 9/3/14 100 10 9/4/14 9/5/14 150 10 9/6/14 9/20/14 150 10 9/21/14 9/30/14 200 20 9/1/14 9/14/14 50 20 9/15/14 9/25/14 300


其中,b.金额优先于a.金额(如果存在),并且我有一个唯一的记录,涵盖表1中为每个客户表示的日期范围内的所有天数。可能吗?如果是这样,我想不出来。我希望这更清楚,请让我知道是否有更多有用的信息。

哪部分您不知道怎么做?如果只是客户10,我如何确保我在结果行中有第一条记录?也就是说,如果我在重叠的日期加入,我只会想象得到一张记录,而不是两张,包括那些不重叠的日子。我没有时间找出具体的答案,但我可以指出我将要走的方向。在where子句中需要有OR,这样就可以得到重叠日期的两边。希望这有帮助。我会调查的,谢谢你的帮助!