从现有值更新访问列

时间:2012-09-11 19:59:12

标签: ms-access ms-access-2007

我有一个MS访问表,其中包含以下列和示例记录。

如何使用每个ProductID的最小LastSaleDate更新adDate值。

orderID productID   lastsaleDate    adDate
1       1           10/20/2012  
2       1           5/10/2007   
3       1           4/1/2004    
4       1           20/11/2011  
5       2           10/10/2010  
6       2           12/10/1972  

例如,ProductID 1的adDate将是4/1/2004 对于ProductID 2将是12/10/1972

2 个答案:

答案 0 :(得分:1)

您可以使用DMin:

UPDATE sales  
SET sales.adDate = DMin("lastsaleDate","sales","productID=" & productid)

答案 1 :(得分:0)

除非您有充分的理由在表中实际存储adDate值,否则请考虑在需要时随时使用查询计算adDate。这样,您就不会冒险显示尚未更新的adDate值,以反映基础数据的最新更改。

SELECT
    y.orderID,
    y.productID,
    y.lastsaleDate,
    sub.adDate
FROM
    YourTable AS y
    INNER JOIN
    (
        SELECT productID, Min(lastsaleDate) AS adDate
        FROM YourTable
        GROUP BY productID
    ) AS sub
    ON y.productID = sub.productID;