2013-02-20 30 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; 
相关问题