警告:這裏是初學SQL!溫柔...難以結合JET SQL查詢
我有兩個查詢,以相當及時的方式獨立地給我我想從相關表中得到的東西,但是當我嘗試將這兩者結合成一個(富有感情的)聯合時,事情會很快下降到位而查詢要麼給我重複的記錄,要花很長時間才能運行,要麼拒絕運行我所引用的各種語法錯誤。
注意:我必須創建一個「虛擬」表(tblAllDates),其中包含2008年1月1日之後的日期,因爲我需要查詢從每天返回一條記錄,並且兩個表中都有幾天沒有數據。這是我能想出這樣做的唯一途徑,無疑有一種更聰明的辦法...
這裏有疑問:
SELECT tblAllDates.date, SUM(tblvolumedata.STT) FROM tblvolumedata RIGHT JOIN tblAllDates ON tblvolumedata.date=tblAllDates.date GROUP BY tblAllDates.date; SELECT tblAllDates.date, SUM(NZ(tblTimesheetData.batching)+NZ(tblTimesheetData.categorisation)+NZ(tblTimesheetData.CDT)+NZ(tblTimesheetData.CSI)+NZ(tblTimesheetData.destruction)+NZ(tblTimesheetData.extraction)+NZ(tblTimesheetData.indexing)+NZ(tblTimesheetData.mail)+NZ(tblTimesheetData.newlodgement)+NZ(tblTimesheetData.recordedDeliveries)+NZ(tblTimesheetData.retrieval)+NZ(tblTimesheetData.scanning)) AS VA FROM tblTimesheetData RIGHT JOIN tblAllDates ON tblTimesheetData.date=tblAllDates.date GROUP BY tblAllDates.date;
我成功的最好結果如下:
SELECT tblAllDates.date, 0 AS STT, SUM(NZ(tblTimesheetData.batching)+NZ(tblTimesheetData.categorisation)+NZ(tblTimesheetData.CDT)+NZ(tblTimesheetData.CSI)+NZ(tblTimesheetData.destruction)+NZ(tblTimesheetData.extraction)+NZ(tblTimesheetData.indexing)+NZ(tblTimesheetData.mail)+NZ(tblTimesheetData.newlodgement)+NZ(tblTimesheetData.recordedDeliveries)+NZ(tblTimesheetData.retrieval)+NZ(tblTimesheetData.scanning)) AS VA FROM tblTimesheetData RIGHT JOIN tblAllDates ON tblTimesheetData.date=tblAllDates.date GROUP BY tblAllDates.date UNION SELECT tblAllDates.date, SUM(tblvolumedata.STT) AS STT, 0 AS VA FROM tblvolumedata RIGHT JOIN tblAllDates ON tblvolumedata.date=tblAllDates.date GROUP BY tblAllDates.date;
這給我我想要的VA和STT數據,但在兩個記錄在那裏我有數據來自於一個單一的一天,就像這樣:
date STT VA 28/07/2008 0 54020 28/07/2008 33812 0 29/07/2008 0 53890 29/07/2008 33289 0 30/07/2008 0 51780 30/07/2008 30456 0 31/07/2008 0 52790 31/07/2008 31305 0
我所追求的是每天單行STT和VA數據。這可能會如何實現,我可以從可以被認爲是最優的查詢中離開多遠? (不要笑,我只是想學習!)
謝謝,這適用於一個簡單的值(例如「a。掃描」),但返回「您試圖執行查詢,不包含指定的表達式'日期'作爲聚合函數的一部分」每當我嘗試使用其中一個SUM表達式。 – Lunatik 2009-02-24 13:50:59
對不起,應該提到,只有當我將兩個連接都更改爲LEFT JOIN時,它才起作用,我不認爲這會給我需要的結果。使用RIGHT JOIN會提供「不支持的連接表達式」錯誤。我遇到過JET SQL限制嗎? – Lunatik 2009-02-24 13:57:52