【问题标题】:How to use subquery to populate column in Access query如何使用子查询填充 Access 查询中的列
【发布时间】:2013-09-18 10:09:55
【问题描述】:

我正在开发一个用于预测购买的 Access 数据库,并且我正在尝试创建一个查询,该查询将给我提供有效价格和行总和的记录列表。

当我尝试将价格与数量结合起来时,我遇到了问题。我有以下表格

包含预测数据的表(省略与此查询无关的列)

need_rows
ID  product_id  qty use_date
----------------------------
1   1           100 1.1.2014
2   1           50  15.1.2014
... 

价格表

prices
ID  product_id  price   valid_from
----------------------------------
1   1           1       1.12.2013
2   1           2       24.12.2013
3   1           5       10.1.2014
... 

查询结果应如下所示:

result of query
product_id  use_date    qty price   sum
---------------------------------------
1           1.1.2014    100 2       200
1           15.1.2014   50  5       250
...

这意味着我需要根据需要行中的 use_date 和价格中的 valid_from 日期为每一行获取有效价格。有效价格是 valid_from 日期等于或最近到 use_date 的价格。

以下是我尝试过但没有成功的方法之一。

SELECT prices.price
FROM prices
WHERE (((prices.product_id)=[product_id]) AND ((prices.valid_from)=
(SELECT Max(prices.valid_from) AS valid
FROM prices
WHERE (((prices.product_id)=[product_id]) AND ((prices.valid_from)<=[use_date]));).));

感谢任何帮助!

【问题讨论】:

    标签: sql ms-access ms-access-2010


    【解决方案1】:
    SELECT need_rows.Id
    , need_rows.qty
    , need_rows.product_id
    , (SELECT TOP 1 price 
    FROM prices 
    WHERE need_rows.product_id = prices.product_id 
    AND need_rows.use_date >= prices.valid_from 
    ORDER BY prices.valid_from DESC) AS currentprice
    
    FROM need_rows;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      相关资源
      最近更新 更多