有谁能告诉我为什么这个简单的JOIN查询给了我一张没有结果的表格?当我分别运行countINTmonth和countDEPTmonth查询时,它们会给我我期望的结果。但是,当我运行简单的JOIN查询时,它为我提供了一个包含列名但没有数据的表 - 但也没有任何错误消息!
CountINTmonth查询
SELECT Count(clients.ssn) AS CountofIntakes, month(clients.prog_start) AS Month2, year(clients.prog_start) AS Year2
FROM clients
WHERE clients.prog_start BETWEEN [Enter Start Date] AND [Enter End Date]
GROUP BY year(clients.prog_start), month(clients.prog_start)
ORDER BY year(clients.prog_start) DESC , month(clients.prog_start) DESC;
CountDEPTmonth查询
SELECT Count(clients.ssn) AS CountOfDepartures, month(clients.[departure date]) AS Month1, year(clients.[departure date]) AS year1
FROM clients
WHERE clients.[departure date] BETWEEN [Enter Start Date] AND [Enter End Date]
GROUP BY year(clients.[departure date]), month(clients.[departure date])
ORDER BY year(clients.[departure date]) DESC , month(clients.[departure date]) DESC;
加入前两个
的查询SELECT countdeptmonth.countofdepartures, countintmonth.countofintakes, countdeptmonth.month1, countdeptmonth.year1
FROM countdeptmonth
INNER JOIN
countintmonth
ON (countdeptmonth.year1=countintmonth.year2 AND countdeptmonth.month1=countintmonth.month2)
ORDER BY countdeptmonth.year1 DESC, countdeptmonth.month1 DESC
当我将JOIN更改为LEFT JOIN时,除了countofintakes列为空外,数据才会显示。当我将JOIN更改为RIGHT JOIN时,唯一有数据的列是countofintakes。
表格上的注释
CLIENTS表有一堆具有不同数据点的列。 SSN是主键。 prog_start是他们开始治疗计划时的日期字段。 [出发日期]是他们离开我们的计划时的日期字段。 [输入开始日期]和[输入结束日期]应该是用户在运行查询时输入的日期范围 - 两个查询的日期应该相同。任何帮助将不胜感激!
答案 0 :(得分:1)
我可能已经解决了自己的问题。我刚刚将MonthName函数添加到Month1和Month2列。
MonthName(month(clients.prog_start)) AS Month2
和
MonthName(month(clients.[departure date])) AS Month1
一旦我这样做,JOIN查询显示正确的结果。我甚至不需要更新GROUP BY字段。
任何人都知道为什么查询无法加入月份的数量以及为什么需要正确加入名称?