我的表格中包含日期/时间字段( DateSubmitted ), LONG INTEGER 字段(分数)和 TEXT 字段(团队)。
我运行以下查询没有问题( qry_REP_MonthlyReportedFigures ):
SELECT MONTHNAME(MONTH(DateSubmitted)) AS sMonth,
YEAR(DateSubmitted) AS lYear,
COUNT(*) AS CountOfReportedErrors
FROM tbl_QCErrorLog
WHERE Team = 'Some Team'
GROUP BY MONTH(DateSubmitted), YEAR(DateSubmitted)
我也运行此查询没有问题( qry_REP_MonthReportedSeverityTotal ):
SELECT MONTHNAME(MONTH(DateSubmitted)) AS sMonth,
YEAR(DateSubmitted) AS lYear,
SUM(Score) AS SeverityTotal
FROM tbl_QCErrorLog
WHERE Team = 'Some Team'
GROUP BY MONTH(DateSubmitted), YEAR(DateSubmitted)
但是,如果我然后根据这两个查询运行第三个查询,它就不会正确加入它们,我在 ST.sMonth 中得到 #Error 并且空白/ ST.lYear 和 SeverityTotal
中的空值SELECT RF.sMonth,
RF.lYear,
RF.CountOfReportedErrors,
ST.sMonth,
ST.lYear,
ST.SeverityTotal
FROM qry_REP_MonthlyReportedFigures RF LEFT JOIN qry_REP_MonthReportedSeverityTotal ST
ON RF.lYear = ST.lYear AND RF.sMonth = ST.sMonth
我希望加入没有问题,因为所有数据类型都相同 - 毕竟它们来自同一个来源。
如果我加入其正常工作的月份,但这会在几年后出现问题,因为我有不同年份同月的数据。如果我在这一年加入,我会再次获得 #Error 。
现在,如果我更新 qry_REP_MonthReportedSeverityTotal SQL以将月份名称转换为字符串,并将年份转换为长整数,则一切正常:
SELECT CSTR(MONTHNAME(MONTH(DateSubmitted))) AS sMonth,
CLNG(YEAR(DateSubmitted)) AS lYear,
SUM(Score) AS SeverityTotal
FROM tbl_QCErrorLog
WHERE Team = 'Some Team'
GROUP BY MONTH(DateSubmitted), YEAR(DateSubmitted)
所以,虽然我已经解决了这个问题,但有没有人知道为什么原始查询不起作用?
编辑:现在真的很困惑 - 我离开办公室5分钟,回来现在它不起作用,除非我把两个查询都转换为字符串和长整数。
答案 0 :(得分:1)
为什么qry_REP_MonthlyReportedFigures
从tbl_QCErrorLog
获取数据但qry_REP_MonthReportedSeverityTotal
从tbl_QC_ErrorLog
获取数据?
此查询应该为您提供没有JOIN
的预期结果:
SELECT MONTHNAME(MONTH(DateSubmitted)) AS sMonth,
YEAR(DateSubmitted) AS lYear,
COUNT(*) AS CountOfReportedErrors
SUM(Score) AS SeverityTotal
FROM tbl_QCErrorLog
WHERE Team = 'Some Team'
GROUP BY MONTH(DateSubmitted), YEAR(DateSubmitted)