【发布时间】:2020-10-30 10:10:42
【问题描述】:
假设我想将table_a 中具有startdate 和enddate 的记录与个别日期相匹配,并查看是否在(例如3 月13 日)table_a 中的一条或多条记录匹配。我想通过每天生成一行来解决这个问题,日期作为前导列,来自table_a 的任何匹配数据作为left join。
我使用过具有date 维度的数据仓库,这使这项工作变得容易。但不幸的是,我需要在没有此类表的 OLTP 数据库上运行此特定查询。
如何在 SQL Server 中生成每日行表?在没有临时表、函数/过程等的情况下,如何在查询中执行此操作?
【问题讨论】:
-
(1) 如果您只关心一个日期(这似乎是您的问题),则不需要生成所有日期。 (2) 如果您只想重叠,您甚至不需要生成所有日期。您可以考虑用样本数据和所需结果提出一个新问题。与此同时,GMB 的答案比你的答案更适合你想做的事情。
-
@GordonLinoff (1) 我想要一个所有日期的列表,其中(可能)匹配来自
table_a的数据。这就是问题所在,也是当前存在的答案。 (2)“更好”不仅是主观的,而且可以用上下箭头来表示。你到底在暗示什么? -
。 .它更短。它更简洁。它会准确生成所需的日期。对我来说似乎更好。
标签: sql sql-server datetime recursive-query sql-server-2017