【问题标题】:Access SQL: Select most recent date rather than list of datesAccess SQL:选择最近的日期而不是日期列表
【发布时间】:2016-06-27 12:26:30
【问题描述】:

我有一个商品价格和价格日期表,以及另一个包含供应商交易数据的表,其中还有一个包含日期的列。价格日期和供应商日期列不相同。如果我从供应商表中选择一个日期,我想检索最接近该供应商交易日期的日期的商品价格。商品价格日期可以早于或等于供应商交易日期,但不得晚于该日期。

工作答案: [List3 是可能的供应商日期,List4 是商品]

SELECT TOP 1 CommPrices.Price
FROM CommPrices
WHERE (((CommPrices.DateComm)<=[Forms]![Tool Should Cost]![List3]) AND ((CommPrices.Commodity)=[Forms]![Tool Should Cost]![List4]))
ORDER BY CommPrices.DateComm DESC;

我想要的示例:

假设商品铜具有以下日期和价格数据: 2015 年 1 月 1 日 10.00 美元和 2016 年 1 月 1 日 5.00 美元和 2016 年 6 月 6 日 15.00 美元

如果我选择一个随机的供应商日期,比如说 2016 年 2 月 1 日,那么最近的日期是 01/01/2016,因此我应该取回 5 美元。

【问题讨论】:

  • 我删除了“mysql”标签,因为语法强烈建议使用 MS Access。
  • 是 Access 女士 - 抱歉
  • 没有。只是最接近所选供应商日期的最新商品价格。
  • 是的 - 很抱歉。我编辑了帖子。
  • 你为什么放弃ORDER BY CommPrices.DateComm DESC

标签: sql ms-access


【解决方案1】:

只需添加TOP 1ORDER BY

SELECT TOP 1 CommPrices.Price
FROM CommPrices
WHERE CommPrices.DateComm <= [Forms]![Tool Should Cost]![List 3]
ORDER BY CommPrices.DateComm DESC;

【讨论】:

  • 这给了我错误:SELECT 语句包含一个保留字或参数名称拼写错误或丢失,或者标点符号不正确。
  • 去掉括号 -> SELECT TOP 1
  • 代码运行但没有给我正确的信息。我测试了它,它给了我一个更大的数字 - 例如,我测试了它的商品钴并选择了 2015 年 9 月 1 日。那天钴的价格是 28,398.26 美元,但查询给了我 92.521,10 美元。它实际上给出了我选择的任何供应商日期的最后一个数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2012-04-15
相关资源
最近更新 更多