2016-03-15 55 views
2

我已經有一個簡單的SELECT結合INSERT INTO輸出表工作正常,但現在我必須選擇部分數據與不同的WHERE子句,不知道如何組合它。如何結合MS Access中的2個select語句?

源數據表具有這樣的列: 日期,ID,銷售,COR1,Cor 2中,COR 3,COR4

然後,我有「過濾器」表定義在格式ID和日期的組合: ID,日期,結束日期

所以原來的查詢是這樣的:

INSERT INTO sales_export (ID, Sales, Cor1, Cor2, Cor3, Cor4) 
SELECT Tsales.ID, Sum(Tsales.Sales) AS Sales, Sum(Tsales.Cor1) AS Cor1, Sum(Tsales.Cor2) AS Cor2, Sum(Tsales.Cor3) AS Cor3, Sum(Tsales.Cor4) AS Cor4 
FROM Tsales, Tfilter 
WHERE (((Tsales.ID)=Tfilter.ID) And ((Tsales.Date) Between Tfilter.Start_date And Tfilter.End_date)) 
GROUP BY Tsales.ID 

但現在改變了條件,除了COR 3各個領域都有相同的日期,所以我需要單獨的選擇爲COR 3和所有其餘的然後合併它並插入導出表。

任何想法?我試圖使用UNION和JOIN來玩2個選擇,但由於語法錯誤我無法弄清楚,但它不起作用。

感謝

+0

後,您嘗試使用'UNION查詢/ JOIN' –

+0

'UNION'是正確的方法,所以告訴我們您嘗試過的查詢並且失敗 –

+0

UNION不起作用,因爲它表示列表中的列數不匹配,如果我正確理解UNION函數是必須的。我會嘗試與JOIN一起玩,併發布我的嘗試,如果無法弄清楚。另一個問題是列的順序必須相同,所以我可能需要3次查詢才能這樣做。 – Stileth

回答

0

試圖加入一個更Tsales表ID(如果ID是唯一的) 和你的代碼看起來應該像這樣的:

INSERT INTO sales_export (ID, Sales, Cor1, Cor2, Cor3, Cor4) 
SELECT T1.ID, Sum(T1.Sales) AS Sales, Sum(T1.Cor1) AS Cor1, Sum(T1.Cor2) AS Cor2, Sum(T2.Cor3) AS Cor3, Sum(T1.Cor4) AS Cor4 
FROM ((Tsales T1) JOIN Tfilter T2 ON T1.ID = T2.ID) LEFT JOIN Tsales T3 ON T1.ID = T3.ID AND T3.Date BETWEEN [Your New Date1] AND [Your New Date2] 
WHERE ((T1.Date) Between T2.Start_date And T2.End_date)) 
GROUP BY T1.ID