在Access Query

时间:2018-04-04 17:24:22

标签: sql ms-access

我有一个Access数据库,我正在处理两个表: tbl_ProductionTarget tbl_DailyInput 。我需要将 tbl_DailyInputDate 与该月的目标进行匹配。

问题是目标每月只更新一次,但每天都会输入其余数据。如何使我的查询仅匹配从每日输入到目标表的月份和年份。我正在添加SQL代码,因为我认为你会更容易看到我在做什么(或者不做)。

PS。总好的部分是我想要与目标进行比较但我不认为它与我在这里问的内容相关。

SELECT tbl_ProductionTarget.Target_Hardening, tbl_DailyInput.TotalGoodParts
FROM tbl_DailyInput, tbl_ProductionTarget
WHERE (((Year([tbl_DailyInput]! 
[DailyInputDate]))=Year([tbl_ProductionTarget]![Target_Date])) AND 
((Month([tbl_DailyInput]![DailyInputDate]))=Month([tbl_ProductionTarget]! 
[Target_Date])));

2 个答案:

答案 0 :(得分:0)

如果没有看到您的数据,或者至少是您的表格使用的结构/数据类型,很难提出一个好的建议。

您可以将查询重写为以下内容 -

SELECT b.Target_Hardening, a.TotalGoodParts
FROM 
(
    SELECT TotalGoodParts, Year(DailyInputDate) AS Y, Month(DailyInputDate) AS M
    FROM tbl_DailyInput
) AS a
INNER JOIN
(
    SELECT Target_Hardening, Year(Target_Date) AS Y, Month(Target_Date) AS M
    FROM tbl_ProductionTarget
) AS b
ON a.Y = b.Y AND a.M = b.M

但这实际上是对你已经拥有的东西的改写。

答案 1 :(得分:0)

我的代码是正确的,但我的日期在每个表格中的格式都不相同。一旦我修复了它,我的查询产生了正确的结果。谢谢古斯塔夫。