2016-11-28 78 views
0

基本上我有下面這個查詢,這給了我每週的銷售數量,但它跳過了一個特定項目沒有銷售的周。我也希望它們顯示爲0值。 順便說一下,是否有可能合併下面的兩個查詢?我試過但無法讓連接工作。如何添加沒有銷售爲零值的項目到我的SQL查詢?

SELECT tblWeek.WeekNum, [Query - Sales].ModelName, Count([Query - Sales].OutDate) AS CountOfOutDate 
FROM tblWeek LEFT JOIN [Query - Sales] ON tblWeek.WeekNum = [Query - Sales].WeekNumber 
GROUP BY tblWeek.WeekNum, [Query - Sales].ModelName 
HAVING ((([Query - Sales].ModelName) Is Not Null)) 
ORDER BY [Query - Sales].ModelName; 

查詢 - 銷售:

SELECT DDL_Items.ModelName, DDL_Items.OutDate, DDL_Models.Type, DatePart("ww",[OutDate],2) AS WeekNumber 
FROM DDL_Models INNER JOIN DDL_Items ON DDL_Models.ModelName = DDL_Items.ModelName; 

enter image description here

謝謝你,最好的問候,

舊金山

+0

如果'tblWeek.WeekNum'沒有失蹤周的數據,那麼這些日期將不會出現在您的結果集中。如果是這種情況,您將不得不使用日曆表來提供此信息。 –

+0

tblWeek.WeekNum是一個日曆表。我的意思是,這張表只有1到53(週數)的數字。 –

+0

如果不是零,那麼現在正在顯示那些星期的內容? –

回答

1

你想要做的第一件事情就是創建一個笛卡爾加入你的型號名稱和週數之間。例如:

SELECT DISTINCT [Query - Sales].ModelName, tblWeek.WeekNum 
FROM [Query - Sales] 
LEFT JOIN tblWeek 

這將爲每個型號名稱的每週創建一條記錄。

然後,你要的實際數據來加入這個查詢:

SELECT qryA.*, Count([Query - Sales].OutDate) AS CountOfOutDate 
FROM (
SELECT DISTINCT [Query - Sales].ModelName, tblWeek.WeekNum 
FROM [Query - Sales] 
LEFT JOIN tblWeek 
) as qryA 
LEFT JOIN [Query - Sales] 
    ON tblWeek.WeekNum = qryA.WeekNumber 
GROUP BY tblWeek.WeekNum, qryA.ModelName 
HAVING qryA.ModelName Is Not Null 
ORDER BY qryA.ModelName; 
+0

這聽起來像我所需要的。基本上創建所有周/模型的組合。但是我沒有設法做第一個查詢工作。我在from子句中出現語法錯誤。 –

+0

不確定。我知道在Access中,如果您只是使用設計模式添加tblWeek和[查詢 - 銷售]並且不加入它們,它將創建您的笛卡爾連接。嘗試這樣做,並讓Access爲您編寫SQL,然後在較大的(第二個)查詢中使用它。 –

+0

太棒了,非常感謝! –

0

完全萬一有人在下面的代碼爲尋找答案:

SELECT qryA.ModelName, qryA.WeekNum, Count([Query - Sales].OutDate) AS CountOfOutDate 
FROM qryA LEFT JOIN [Query - Sales] ON qryA.WeekNum = [Query - Sales].WeekNumber 
GROUP BY qryA.ModelName, qryA.WeekNum;