使用派生字段

时间:2013-03-06 19:58:07

标签: ms-access calculated-columns

我有两张桌子。一个是InvoiceHeader,另一个是InvoiceDetails。我在InvoiceHeader中有一个名为total的字段,我想从InvoiceDetails表中计算与该InvoiceID相关的所有费用。

我能做的最简单的方法是什么?

我也在研究Access。如果您有任何问题,请询问。

1 个答案:

答案 0 :(得分:0)

假设费用值存储在cost中名为InvoiceDetails的数字字段中,InvoiceID也是两个表中的数字字段...

SELECT
    ih.*,
    DSum("cost", "InvoiceDetails", "InvoiceID = " & ih.InvoiceID)
        As total_cost
FROM InvoiceHeader AS ih;

或者您可以使用汇总查询来计算每个InvoiceID的总计,并将其加入InvoiceHeader

SELECT ih.*, sub.total_cost
FROM
    InvoiceHeader AS ih
    INNER JOIN
    (
        SELECT InvoiceID, Sum(cost) AS total_cost
        FROM InvoiceDetails
        GROUP BY InvoiceID
    ) AS sub
    ON ih.InvoiceID = sub.InvoiceID;

如果你的桌子大到足以注意到这两种方法之间的速度差异,我的猜测是第二种会更快。您选择的任何一个都将从InvoiceDetails.InvoiceID的索引中获益匪浅。