基于最近日期的 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 计算

VBA 代码中的 MS Access SQL 查询

MS Access 最大日期和最近日期及其各自的数量

当用户在 MS Access 中修改表中的另一列时,如何在 SQL Server 中将列设置为今天的日期 [关闭]

MS Access 为每个 GroupID 选择最近的日期

将 null 插入 MS Access 中的日期/时间字段-