基于最近日期的 MS Access 中的 SQL SELECT 查询
Posted
技术标签:
【中文标题】基于最近日期的 MS Access 中的 SQL SELECT 查询【英文标题】:SQL SELECT Query in MS Access based on most recent date 【发布时间】:2018-09-07 21:29:30 【问题描述】:我试图在 PriceFeed 表中找到高于/等于最近日期/时间 MS Access 表单中输入价格的投标价格。 我想从 Stock 表中选择与 PriceFeed 表中符号相同的股票详细信息。
用户输入文本框为txtMini,表单名称为findPrice。
问题是这个 SQL 语句只返回一个结果——最近的股票。 我想查找 PriceFeed 表中所有股票代码的最新价格和相关详细信息,而不仅仅是一只股票。
SELECT
PriceFeed.StockSymbol
, PriceFeed.DateTime
, PriceFeed.Bid
, Stock.StockDescription
, StockType.TypeDescription
, Category.CategoryDescription
, CurrencyID.Currency
, Stock.AvailableUnits
FROM
PriceFeed
, Stock
, StockType
, Category
, CurrencyID
WHERE
PriceFeed.Bid >=[Forms]![findPrice]![txtMini]
AND PriceFeed.DateTime =
(SELECT MAX(PriceFeed.DateTime) FROM PriceFeed
)
AND PriceFeed.StockSymbol = Stock.Symbol
AND Stock.TypeID = StockType.TypeID
AND Stock.BusinessCategoryID = Category.CategoryID
AND Stock.CurrencyID = CurrencyID.CurrencyID
;
【问题讨论】:
How to format SQL Code。把你的问题分解成更小的问题。首先获取所有股票的最新价格。 (提示:分组)。 【参考方案1】:我猜每只股票都有自己的“最近的日期/时间”,所以您可以尝试将 DateTime 的 WHERE 条件更改为:
PriceFeed.DateTime = (
SELECT MAX(DateTime) FROM PriceFeed AS tmp WHERE StockSymbol = PriceFeed.StockSymbol
)
【讨论】:
以上是关于基于最近日期的 MS Access 中的 SQL SELECT 查询的主要内容,如果未能解决你的问题,请参考以下文章
基于控件名称而不是控件源(字段)的 MS Access 计算