SQL LEFT JOIN 与 WHERE 子句语法错误 (MS Access)
SQL LEFT JOIN with WHERE Clause Syntax Error (MS Access)
我有一个 table 的数据显示了 8 年期间各种产品型号的销售情况 (tblSales
) 每条销售记录都列出了交易信息,包括产品、交易时间戳和名为year_month 基于时间戳。
我需要创建一个查询,return 为数据集中每个 year_month 的产品模型统计销售(总共 102 个月)。问题是有些型号没有在给定的月份购买,所以我需要查询 return 该月份的 0。
目前我可以通过创建第二个 table 和两个单独的查询来完成此操作。
我用原始 table(tblSales
) 中的每个 year_month 创建了一个 table (tblYrMo
),然后 qry1
的月份对 productA 进行计数(省去了没有 productA 销售的月份)。接下来,qry2
是 tblYrMo
到 qry1
的左连接,使用 NZ() 函数为没有产品销售的月份生成 0。这为我提供了所有 102 个月的产品 A 计数的预期结果。
对多个产品使用此方法会创建许多查询,因此我尝试简化我的代码并使用子查询仅创建一个查询。但是,我收到语法错误(“连接操作中的语法错误”)。
我想知道这里是否有人可以提供帮助,或者这在 MS Access 中是否可行 SQL
这里是我写的代码不是运行。该错误突出显示了子查询 FROM tblSales
,因此我尝试将其放入 [],并且尝试将所有 tabels/columns 放入 [],但没有成功。
SELECT tblYrMo.year_month
FROM tblYrMo
LEFT JOIN
(SELECT Count(NZ([tblSales].[year_month],0)) as Monthly_Count
FROM tblSales
WHERE (tblSales.[product_model] Like "A"))
ON tblYrMo.year_month = tblSales.year_month;
这里是我正在使用的两个当前完成工作的查询供参考
qry1
SELECT tblSales.year_month, Count(tblSales.year_month) AS Monthly_Count
FROM tblSales
WHERE (((tblSale.[product_model]) Like "A"))
GROUP BY tblSales.year_month;
qry2
SELECT tblYrMo.year_month, Nz([qry1].[Monthly_Count],0) AS Monthly_Sale_Count
FROM tblYrMo
LEFT JOIN qry1
ON tblYrMo.year_month = qry1.year_month;
您需要一个 table 别名:
SELECT tblYrMo.year_month
FROM tblYrMo LEFT JOIN
(SELECT Count(NZ([tblSales].[year_month],0)) as Monthly_Count
FROM tblSales
WHERE tblSales.[product_model] Like "A"
) as s
ON tblYrMo.year_month = s.year_month;
我认为主要问题是查询没有return你想要的,我认为你很接近:
SELECT tblYrMo.year_month, Nz([qry1].[Monthly_Count],0) AS Monthly_Sale_Count
FROM tblYrMo
LEFT JOIN (
SELECT tblSales.year_month, Count(tblSales.year_month) AS Monthly_Count
FROM tblSales
WHERE (((tblSale.[product_model]) Like "A"))
GROUP BY tblSales.year_month
) as qry1
ON tblYrMo.year_month = qry1.year_month;
我认为这就是您正在寻找的那种合并查询。我可能还会添加销售产品模型的分组依据,并将该字段包含在您的结果中。
我有一个 table 的数据显示了 8 年期间各种产品型号的销售情况 (tblSales
) 每条销售记录都列出了交易信息,包括产品、交易时间戳和名为year_month 基于时间戳。
我需要创建一个查询,return 为数据集中每个 year_month 的产品模型统计销售(总共 102 个月)。问题是有些型号没有在给定的月份购买,所以我需要查询 return 该月份的 0。
目前我可以通过创建第二个 table 和两个单独的查询来完成此操作。
我用原始 table(tblSales
) 中的每个 year_month 创建了一个 table (tblYrMo
),然后 qry1
的月份对 productA 进行计数(省去了没有 productA 销售的月份)。接下来,qry2
是 tblYrMo
到 qry1
的左连接,使用 NZ() 函数为没有产品销售的月份生成 0。这为我提供了所有 102 个月的产品 A 计数的预期结果。
对多个产品使用此方法会创建许多查询,因此我尝试简化我的代码并使用子查询仅创建一个查询。但是,我收到语法错误(“连接操作中的语法错误”)。 我想知道这里是否有人可以提供帮助,或者这在 MS Access 中是否可行 SQL
这里是我写的代码不是运行。该错误突出显示了子查询 FROM tblSales
,因此我尝试将其放入 [],并且尝试将所有 tabels/columns 放入 [],但没有成功。
SELECT tblYrMo.year_month
FROM tblYrMo
LEFT JOIN
(SELECT Count(NZ([tblSales].[year_month],0)) as Monthly_Count
FROM tblSales
WHERE (tblSales.[product_model] Like "A"))
ON tblYrMo.year_month = tblSales.year_month;
这里是我正在使用的两个当前完成工作的查询供参考
qry1
SELECT tblSales.year_month, Count(tblSales.year_month) AS Monthly_Count
FROM tblSales
WHERE (((tblSale.[product_model]) Like "A"))
GROUP BY tblSales.year_month;
qry2
SELECT tblYrMo.year_month, Nz([qry1].[Monthly_Count],0) AS Monthly_Sale_Count
FROM tblYrMo
LEFT JOIN qry1
ON tblYrMo.year_month = qry1.year_month;
您需要一个 table 别名:
SELECT tblYrMo.year_month
FROM tblYrMo LEFT JOIN
(SELECT Count(NZ([tblSales].[year_month],0)) as Monthly_Count
FROM tblSales
WHERE tblSales.[product_model] Like "A"
) as s
ON tblYrMo.year_month = s.year_month;
我认为主要问题是查询没有return你想要的,我认为你很接近:
SELECT tblYrMo.year_month, Nz([qry1].[Monthly_Count],0) AS Monthly_Sale_Count
FROM tblYrMo
LEFT JOIN (
SELECT tblSales.year_month, Count(tblSales.year_month) AS Monthly_Count
FROM tblSales
WHERE (((tblSale.[product_model]) Like "A"))
GROUP BY tblSales.year_month
) as qry1
ON tblYrMo.year_month = qry1.year_month;
我认为这就是您正在寻找的那种合并查询。我可能还会添加销售产品模型的分组依据,并将该字段包含在您的结果中。