SQL查询根据结束日期将日期分配到期间
问题描述:
我有一张表,其中包含从现在到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中,如果有差别
答
使用DMin
检索最低CUTOFF_DATE是大于或等于[日期]。
SELECT
[Date],
DMin("cutoff_date", "report_dates",
"[cutoff_date] >= " & Format([Date], "\#yyyy-m-d\#")) AS report_date
FROM first_table;
答
可以有优势,使用子查询,例如,你可以使用一个参数,它可以在代码分配,从形式获得,或者简单地键入。这个例子只选择有这些记录日期与在提示[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;
我得到一个语法错误。在最小函数 – KillerSnail 2013-02-20 09:10:10
对不起,这是缺少一个右括号。 – HansUp 2013-02-20 09:21:58
嗨HansUp,格式([日期]应该格式化([cutoff_date]也搞砸了。干杯 – KillerSnail 2013-02-22 02:00:03