基于日期范围连接表
Posted
技术标签:
【中文标题】基于日期范围连接表【英文标题】:Joining Tables based on Date Ranges 【发布时间】:2016-04-20 06:19:08 【问题描述】:我有一个 MS Access 问题
我一直在努力处理包含日期范围连接的查询。 找到了几个关闭的帖子,但没有得到它的工作
我有两张桌子。 一个包含一些数据和截止日期。
Table A
Field 1, Field 2, Field 3, Due Date
另一个表包含关于一个时期的信息。
Table B
Periodname, Field X/Y/Z, StartDate, EndDate
我尝试使用此输出进行查询
Field 1, Field 2, Due Date, Periodname
希望你能帮忙。
【问题讨论】:
【参考方案1】:在 MsAccess 中,您实际上可以使用 <
和 >
编写连接语句,尽管您无法在查询编辑器中显示它。
SELECT [Field 1], [Field 2], [Field 3], [Due Date], PeriodName
FROM A INNER JOIN B ON A.[Due Date] >= B.StartDate AND A.DueDate <= B.EndDate
【讨论】:
【参考方案2】:您可以通过 where 子句“加入”:
Select
Field1,
Field2,
DueDate,
Periodname
From
TableA,
TableB
Where
DueDate Between StartDate And EndDate
【讨论】:
我设法让它与 Where, 显然问题是我只从与表 B 匹配的表 A 中获取记录。【参考方案3】:这是我到目前为止创建的 但是我在“Between”命令中遇到错误。 "你使用了运算符 'Between' 而没有 'And'
SELECT Left([Q_Epics].[Component/s],3) AS Proj_Nr, Mid([Q_Epics].[Component/s],6,35) AS Project, Q_Epics.[Epic Key], Q_Epics.Summary , Q_Epics.Labels, Q_Epics.[截止日期], Sprints.Sprint AS Sprint
来自 Q_Epics
在 Q_Epics 上左加入 Sprints。[Due Date] 在 [Sprints].[StartSprint] 和 [Sprints].[EindeSprint] 之间
GROUP BY Left([Q_Epics].[Component/s],3), Mid([Q_Epics].[Component/s],6,35), Q_Epics.[Epic Key], Q_Epics.Summary, Q_Epics。标签,Q_Epics.[到期日期],Q_Epics.EpicStatus
有(((Q_Epics.EpicStatus)“已关闭”))
按 Q_Epics 订购。[截止日期];
【讨论】:
【参考方案4】:在这个版本中,错误是: 您尝试运行一个查询,其中 expressin 'Sprints.Sprint' 不是静态函数的一部分
SELECT Left([Q_Epics].[Component/s],3) AS Proj_Nr, Mid([Q_Epics].[Component/s],6,35) AS Project, Q_Epics.[Epic Key], Q_Epics.Summary , Q_Epics.Labels, Q_Epics.[截止日期], Sprints.Sprint
来自 Q_Epics
Q_Epics.[Due Date] >= [Sprints].[StartSprint] AND Q_Epics.[Due Date]
GROUP BY Left([Q_Epics].[Component/s],3), Mid([Q_Epics].[Component/s],6,35), Q_Epics.[Epic Key], Q_Epics.Summary, Q_Epics。标签,Q_Epics.[截止日期],Q_Epics.EpicStatus
有(((Q_Epics.EpicStatus)“已关闭”))
按 Q_Epics 订购。[截止日期];
【讨论】:
请使用Add comment
按钮而不是发布您的 cmets 作为答案
实际上请在您的问题上使用“编辑”在此处添加新代码。【参考方案5】:
完成。 结合你的答案!!谢谢
SELECT Left([Q_Epics].[Component/s],3) AS Proj_Nr, Mid([Q_Epics].[Component/s],6,35) AS Project, Q_Epics.[Epic Key] AS [Epic Key ],Q_Epics.Summary AS 摘要,Q_Epics.Labels AS 标签,Q_Epics.[Due Date] AS [Due Date],[Sprints].[Sprint] AS Sprint
来自 Q_Epics
LEFT JOIN Sprints ON (Q_Epics.[Due Date] >= [Sprints].[StartSprint]) AND (Q_Epics.[Due Date]
WHERE (((Q_Epics.EpicStatus)"已关闭"))
按 Q_Epics 订购。[截止日期];
【讨论】:
以上是关于基于日期范围连接表的主要内容,如果未能解决你的问题,请参考以下文章