簡體   English   中英

SQL LEFT JOIN with WHERE 子句語法錯誤(MS Access)

[英]SQL LEFT JOIN with WHERE Clause Syntax Error (MS Access)

我有一張數據表,顯示 8 年期間各種產品型號的銷售額( tblSales )每條銷售記錄都列出了交易信息,包括產品、交易時間戳和基於時間戳的名為 year_month 的列。

我需要創建一個查詢,返回數據集中每個 year_month 產品 model 的銷售計數(總共 102 個月)。 問題是某些型號在給定月份沒有購買,因此我需要查詢以返回該月份的 0。

目前我可以通過創建第二個表和兩個單獨的查詢來實現這一點。

我用原始表( tblSales tblYrMo ,然后產品 A 的月份計數為qry1 (這排除了沒有 productA 銷售的月份)。 接下來, qry2tblYrMoqry1的左連接,使用 NZ() function 在沒有產品銷售的月份產生 0。 這為我提供了所有 102 個月的 productA 計數結果。

對多個產品使用這種方法會創建數十個查詢,因此我嘗試簡化代碼並使用子查詢僅創建一個查詢。 但是,我收到語法錯誤(“連接操作中的語法錯誤”)。 我想知道這里是否有人可以提供幫助,或者這在 MS Access SQL 中是否可行

這是我寫的代碼沒有運行。 該錯誤突出顯示了FROM tblSales的子查詢,因此我嘗試將其放入 [],並且嘗試將所有表格/列放入 [],但沒有運氣。

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;

您需要一個表別名:

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;

我認為主要問題是查詢沒有返回你想要的,我認為你很接近:

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;

我認為這是您正在尋找的那種合並查詢。 我還可以添加銷售產品 model 的分組,並將該字段包含在您的結果中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM