2017-01-31 23 views
0

我有兩個表:第一表LocationsOFproducts - 保持關於產品和數量的位置數據,第二表Datahistory保留有關庫存移動的數據(從庫存中移除/添加產品)。 我有兩個查詢:一是SumDataHistoryQuery - 使得產品的總和從同一位置移動(從Datahistory表),其次總數量 - 計數有多少產品在某些位置的股票走勢後離開。 在總數量查詢我也有功能,Nz(SumDatahistoryQuery.SumOfQTY,0)用0填充所有產品在一些地點沒有數量取自數據歷史表創建基於條件從2列的新的行和在表與0值填充字段(SQL /訪問)

SQL代碼:

SELECT LocationsOFproducts.[Bay no], LocationsOFproducts.[Product Code], LocationsOFproducts.LocationQTY, Nz([SumDatahistoryQuery].[SumOfQTY],0) AS SumOfQTY, ([LocationQTY])+([SumOfQTY]) AS TOTALQTY 
FROM LocationsOFproducts 
LEFT JOIN SumDatahistoryQuery ON (LocationsOFproducts.[Product Code] = SumDatahistoryQuery.[Product Code]) 
AND (LocationsOFproducts.[Bay no] = SumDatahistoryQuery.[Bay no]) 
AND (LocationsOFproducts.[Product Code] = SumDatahistoryQuery.[Product Code]) 
GROUP BY LocationsOFproducts.[Bay no], LocationsOFproducts.[Product Code], LocationsOFproducts.LocationQTY, Nz([SumDatahistoryQuery].[SumOfQTY],0), ([LocationQTY])+([SumOfQTY]) 
ORDER BY LocationsOFproducts.[Product Code]; 

我的問題是當Datahistory表用戶輸入產品代碼和位置與數量,該產品在該位置不存在(在LocationOFproducts表)我的查詢沒有數過它。 我認爲在這種情況下,Query應該檢查該產品是否存在於該位置? - 如果不是,則應該將產品代碼,位置和0值添加到LocationsOfproducts表中的新行並對這兩個表進行求和。 我知道我應該使用「CASE WHEN,如果不存在並插入到」函數,但我不知道如何將它們實現到我擁有的查詢中。 有沒有人知道如何改變這個查詢來做我想要的? 在此先感謝!

我試圖寫第一個查詢作爲明泰擁塞,但它沒有奏效。

SELECT Datahistory.[Product Code], Datahistory.[Bay no] , Datahistory.QTY , CASE WHEN LocationsOFproducts.[Bay no] =! 1.[Bay no] AND LocationsOFproducts.[Product Code] =! 1.[Product Code] FROM Datahistory 1

它顯示語法錯誤(misssing運營商)

回答

0

您將需要兩個查詢來實現這一而不訴諸VBA代碼。

Query1選擇沒有當前位置的記錄。然後插入/追加查詢以從Query1中插入這些記錄。

可能使用子查詢,但訪問對操作查詢中的某些子查詢有趣。

+0

你有沒有想法如何寫這兩個查詢,使他們工作,因爲我試圖但它不想工作? :( – Wendor

+0

你爲第一個查詢嘗試了什麼?爲了清晰起見,編輯原始問題並將查詢添加到它。 – Minty