SQL JOIN 不适用于相同的数据类型

SQL JOIN not working on same data types

我有一个 table 包含一个 DATE/TIME 字段(DateSubmitted),一个 LONG INTEGER 字段(Score)和一个 TEXT 字段(Team)。

我运行以下查询没有问题(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)

但是,如果我然后 运行 基于这两个查询的第三个查询它没有正确加入它们并且我在 [=33= 中得到 #Error ]ST.sMonth 和 blanks/nulls 在 ST.lYearSeverityTotal

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 分钟,然后回来,现在它不起作用,除非我将查询都转换为字符串和长整数。

为什么 qry_REP_MonthlyReportedFigurestbl_QCErrorLog 获取数据,而 qry_REP_MonthReportedSeverityTotaltbl_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)