当前位置: 首页 > 知识库问答 >
问题:

在日期范围联接上填充数据库

宰父俊民
2023-03-14

我有一个数据集,日期设置为每月的第一个。例如-

我需要加入这张桌子:

通常情况下,我会对这一条加一个权利-

WHERE DATE BETWEEN START DATE AND END DATE

...它工作良好,日期2021-02-01。那是在2021-01-30和2021-02-12之间。

类似地,2021-03-01日期介于2021-02-27和2021-03-12之间

然而!开始日期为2021-02-13、结束日期为2021-02-26的支付期间的值为空。我希望表A中二月份的日期也为此行填充。

我希望表A中的数据有两行,其中一行的起始日期为2021-01-30,结束日期为2021-02-12,另一行的起始日期为2021-02-13,结束日期为2021-02-26。(因为两个支付期都在2月份)。结果数据集应该是这样的-

这是我正在使用的查询-

SELECT * 
  FROM A 
 RIGHT 
  JOIN B
    ON A.DATE BETWEEN B.START DATE AND B.END DATE

共有1个答案

狄信然
2023-03-14

我假设表B示例中缺少2021-01-152021-01-29的日期范围。如果是,则该查询应该能够返回您预期的结果:

SELECT Units, Date, StartDate, EndDate
  FROM tableA a
  LEFT JOIN tableB b
    ON a.Date <= b.EndDate
    AND MONTH(a.Date) = MONTH(b.EndDate)
    ORDER BY b.StartDate

而不是右联接,我选择了左联接。然后将表A中的日期表B中的结束日期进行比较,并使用月()日期月与结束日期月匹配。使用所提供的示例(包括假定的缺失日期范围),这将返回与您预期的结果完全相同的结果。

这里有一个小提琴:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=02c027506954489377a8e484693bff57

 类似资料:
  • 问题内容: 我有一个包含2列的表格,日期和分数。它最多有30个条目,最近30天内每个条目一个。 我的问题是缺少某些日期-我想看看: 我从单个查询中需要得到的是:19,21,9,14,0,0,10,0,0,14 …这意味着缺失的日期填充有0。 我知道如何获取所有值,以及如何使用服务器端语言遍历日期和缺少空格。但这是否可以在mysql中完成,所以我可以按日期对结果进行排序并得到缺失的片段。 编辑:在此

  • 问题内容: 是否有任何语法/软件包允许使用数字范围快速填充Java数组,例如在perl中? 例如 另外,这里提供了一个包,该包允许在上述数字列表中获取第n个数字,而无需实际创建数组(这可能很大)? 例如 实施起来并不太困难,但是我想这可能很普遍,所以也许已经完成了。 问题答案: 不像True Soft的答案那么干净,但是您可以使用Google Guava达到相同的效果: 请注意,您需要一些静态导入

  • 我正在与一个带有日期范围的雪花数据库左联接查询作斗争。请在下面找到样表内容 我的雪花SQL查询:选择o.ORDER_DATE,大小写当ORDER_DATE为NULL时,则“no”否则“yes”结束为ORDER_PLACED,C.customer_id,C.name FROM CUSTOMER C左联接C.customer_id=o.customer_id和o.ORDER_DATE>=DATEADD

  • 我面临着许多困难。 1)虽然在演讲和历史数据中都有日期信息,但在第一个数据中,我有每个条目的具体日期,在第二个数据中有一个日期范围。理想情况下,我希望能够合并,以便每个演讲条目都与演讲者(姓名)和演讲日期所属的历史条目匹配。 2)期望的输出是有一个data.frame或data.table,其行等于演讲data.frame中的观察值,以及名称、日期和每个角色的列(它们将由值填充)。然而,某些角色在

  • 这是当我尝试使用'where'而不是'where field'时收到的错误,尽管从文档中看,'where'似乎是查询Firestore数据库的有效命令。是不是我需要下载其他的豆荚?我有的是:pod'firebase/analytics'pod'firebase/auth'pod'firebase/core'pod'firebase/firestore'

  • 问题内容: 我正在尝试建立一个SQL查询,该查询将为我提供具有相同价格的日期的日期范围。如果价格出现突破,我希望能在新的行中看到它。即使一个月中的某个时间有相同的价格,但如果价格介于两者之间的某个时间有变化,我希望将其视为具有特定日期范围的两个单独的行。 样本数据: 所需结果: 问题答案: 非关系解决方案 我认为没有其他答案是正确的。 不会工作 使用会强制将数据放入物理的“记录归档系统”结构中,然