【发布时间】:2018-08-30 02:05:30
【问题描述】:
我正在尝试在 Access 中编写一个 SQL 查询,这让我发疯。
表 1 有我的日期列(只有一个月的 1 号或 15 号,格式为 mm/dd/yyyy)。我也在此处为每个字段使用 ID 号来获取计数。它可以追溯到 2013 年,但我只想要 2018 年。
表 2 包含格式为 (mmmmm/yy) 的月份和该月份的数量预测。
目标再次是能够连接两个表以比较实际与预计。
不过,无论我使用什么查询,当我加入时,我都没有得到正确的总数。 IE。 2018 年 1 月总共可能有 350 条(1 日和 15 日之间),但是当我加入表格时,只会遇到每个月 1 日的记录,例如当年 1 月显示 300 条。我一直在疯狂地玩弄日期格式,无论出于何种原因,它都拒绝像我想要的那样工作。如果我进行左连接,它将每个月显示 2 个条目 - 表 2 上没有来自第 15 个日期的相应投影数据,所以这一定是问题所在。就是修不了。下面是我的查询。非常感谢。
SELECT Format(([Table1].[Date]), "m/yy") AS [Month],
Count([Table1].[ID]) AS Total,
[Table2].Projection,
FROM [Table1]
INNER JOIN [Table2]
ON [Table1].[Date] = [Table2].[Projection Date]
WHERE ((([Table1].[Date]) Between [Enter Begin Date] And [Enter End Date]))
'''using all of 2018, so between 1/18 and 12/18
GROUP BY Format(([Table1]),"m/yy"),[Table2].[Projection];
表 1 数据示例:
ID Date
1107 1/01/2018
1233 1/15/2018
1500 2/1/2018
表 2 数据示例:
Projection Date Projection
January18 270
February18 283
使用上述代码的示例输出:
Date Total Projection
Jan18 300 270
Feb18 301 283
March18 373 300
使用左连接的示例输出:
Date Total Projection
Jan18 300 270
Jan18 50
Feb18 301 283
Feb18 60
March18 373 300
March18 38
期望的输出
Date Total Projection
Jan18 350 270
Feb18 361 283
March18 411 300
【问题讨论】:
-
编辑您的问题并提供示例数据和所需的结果。
-
如前所述,如果不了解所涉及的内容并知道您期望的结果,就不可能说出问题所在。
-
当您说
Table 2 has the month in format (mmmmm/yy)时,这是否意味着该字段存储为文本? (数据类型为Date的表中的值未格式化。) -
首先将所有日期字段更改为数据类型
Date/Time。 “2018 年 1 月”的值可以存储为当月的第一天,因此1/1/2018。您可能已经注意到,在使用这些值进行计算时,这可能非常重要。