2011-06-10 52 views
1

我正在嘗試基於數據庫中多個不同表的數據構建訪問報告。困難的MS Access查詢 - 如何將它們合併?

我有3列執行計算,我想知道如何把這個查詢放在一起。所有3列都處理日期,但計算方式不同。

第一列檢索動作的用戶名字的最近日期,如果動作的類型是「B」:

select pid, Max(date) as most_recent 
from actions 
where ref = 'B' 
group by pid; 

根據2個字段,一個所述第二列執行計算是一個日期,一個是幾個月的數字。我不確定如何添加這兩個字段,以便將該數字作爲月數添加到日期中。

我至今是:

select nummonths,Max(lastvisit) from users 

第三列我需要選擇爲每個用戶(下一個約會日期)以後的第一次約會,多數民衆贊成,將有日期前而這個日期,以便它有點困難後:

select uid,date from visits 

最後2個查詢代碼需要稍作修改,我想知道最好的方法是什麼曹某在這些一起?一種連接?

+1

你能提供一些所有三個表(只有適用的字段)的示例數據和樣本結果嗎?它將有助於回答你的問題。 – NGLN 2011-06-10 21:30:51

+1

表達式'Max(date)'引用'actions.date'字段的Max()嗎?如果是這樣,你真的需要指定,因爲Jet/ACE查詢優化器可能會決定你只需要當前日期的Max()(因爲這是Date()函數返回的值)。總之,你真的應該避免使用保留字作爲字段名稱,但是當你必須使用它們(例如,別人控制着表格設計)時,你可以通過完全指定它們(使用表名)並圍繞帶方括號的保留字,'Max(動作。[日期])'。 – 2011-06-12 21:18:55

回答

1

如果您需要使用3個查詢中的數據構建報表,則需要相關數據才能加入。在這種情況下,請發送表格的結構。 如果您需要在一個報告中顯示3個列表,您可以使用子報表:創建一個新的空報表。在設計模式下,您可以從工具箱欄添加3個子報表。爲每個子報表分配記錄源屬性到相應的sql。

問候

+0

+1提及對相關數據的需求。 – NGLN 2011-06-12 13:29:23

0

我不確定如何使數量添加到日期的月數增加這兩個領域。

使用DateAdd()函數:

SELECT DateAdd("m", 2, LastVisit) FROM ... 

結果的日期從LastVisit日起兩個月。