2013-02-20 66 views
1

我有一張表,其中包含從現在到2015年的日期列表。 例如,SQL查詢根據結束日期將日期分配到期間

Date 
11/1/2013 
12/1/2013 
13/1/2013 
... 
25/1/2013 

我有一個單獨的表,它包含報告日期。

cutoff_ date purpose 
11/1/2013  Mid Month Report 
25/1/2013  Month End Report 

所以我需要分配2013年11月1日和25/1/2013之間的所有日期25/1/2013最新最好的方式去嗎?

我可以在一個簡單的SQL查詢中做到嗎? 的DB是目前在Access中,如果有差別

回答

1

使用DMin檢索最低CUTOFF_DATE是大於或等於[日期]

SELECT 
    [Date], 
    DMin("cutoff_date", "report_dates", 
     "[cutoff_date] >= " & Format([Date], "\#yyyy-m-d\#")) AS report_date 
FROM first_table; 
+0

我得到一個語法錯誤。在最小函數 – KillerSnail 2013-02-20 09:10:10

+0

對不起,這是缺少一個右括號。 – HansUp 2013-02-20 09:21:58

+0

嗨HansUp,格式([日期]應該格式化([cutoff_date]也搞砸了。乾杯 – KillerSnail 2013-02-22 02:00:03

0

可以有優勢,使用子查詢,例如,你可以使用一個參數,它可以在代碼分配,從形式獲得,或者簡單地鍵入。這個例子只選擇有這些記錄日期與在提示[please enter purpose]中輸入的cutoff_date目的相匹配。

SELECT DISTINCT dates.day, 
       (SELECT TOP 1 cutoff_date 
       FROM report_dates 
       WHERE cutoff_date >= dates.day 
         AND purpose = [please enter purpose] 
       ORDER BY cutoff_date) AS CutOff 
FROM dates 
WHERE (SELECT TOP 1 cutoff_date 
     FROM report_dates 
     WHERE cutoff_date >= dates.day 
       AND purpose = [please enter purpose] 
     ORDER BY cutoff_date) IS NOT NULL; 
相關問題