【问题标题】: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

希望你能帮忙。

【问题讨论】:

    标签: ms-access join


    【解决方案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 订购。[截止日期];

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-09-26
          • 2018-12-19
          • 2014-07-20
          • 1970-01-01
          • 2014-02-28
          相关资源
          最近更新 更多