首页 > 解决方案 > 基于最近日期的 MS Access 中的 SQL SELECT 查询

问题描述

我试图在 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
;

标签: sqlms-access

解决方案


我猜每只股票都有自己的“最近的日期/时间”,所以您可以尝试将 DateTime 的 WHERE 条件更改为:

PriceFeed.DateTime = (
    SELECT MAX(DateTime) FROM PriceFeed AS tmp WHERE StockSymbol = PriceFeed.StockSymbol
)

推荐阅读