我有以下查询("基准"表示"日期"):
'SELECT MCap.Isin, MCap.Datum, MCap.MarketCap
FROM (SELECT MCap.Isin AS myISIN FROM Constituents
INNER JOIN MCap ON Constituents.Isin = MCap.Isin
WHERE ((MCap.Datum=DateAdd("m", -' num2str(WindowSize) ', #' ConstituentDate '#)) AND (Constituents.Datum=#' ConstituentDate '#))) AS AvailableISIN
INNER JOIN MCap ON AvailableISIN.myISIN = MCap.Isin
WHERE (MCap.Datum IN
(SELECT max(MCap.Datum) FROM MCap
WHERE (MCap.Datum>=DateAdd("m", -' num2str(WindowSize) ', #' ConstituentDate '#) AND (MCap.Datum<#' ConstituentDate '#)) GROUP BY MONTH(MCap.Datum), YEAR(MCap.Datum))) ORDER BY MCap.ISIN, MCap.Datum'];
这个查询给了我MCap中每个成员(&#34; isin&#34;)的市场资本化,当它也在&#34;成分&#34;在一定时期内。
不,我想只在给定时间段内提供最后一个日期。我觉得像max(MCap.Datum)
这样的东西,但具有讽刺意味的是它只给了我第一个可用的日期。有人在这里有提示吗?
使用Matlab和Access。
答案 0 :(得分:0)
添加&#39;订购MCap.Datum DESC&#39;到你的陈述结束。
通过这种方式,当您迭代结果时,只要MCap.Datum值发生更改,您就知道已经处理了所有具有最高日期的匹配行。
根据您的数据模型,如果只存在一个这样的行,那么您还可以添加&#39; LIMIT 1&#39;到你的陈述,只返回那一行。