如何将计算字段与相同的外键合并?

问题描述

标题可能不完全符合我的问题,但我想不出如何措辞。

在考虑初始设置成本后,我正在使用视图来计算项目的调整后单价,因此计算字段如下所示:

"SetupFee" + "Shipping" + ( "UnitPrice" * "Quantity" ) / "Quantity"

这些字段来自的表称为 ItemInvoice,并且有一个表的外键,称为 Item,其中包含特定于项目的信息,例如描述。我遇到的问题是,当一个项目有多个发票时,这种方法会给我两个不同的输出。例如,如果我有一个项目 1 的发票和两个项目 2 的发票,它会显示我:

ItemName - (Calculation)
Item1 - 45.11
Item2 - 60.30
Item2 - 50.67

总的来说,我对 sql数据库非常生疏(并且我是第一次使用 LibreOffice Base),我想知道如何合并两张发票的成本并将它们除以总数量。所以像:

("SetupFee1" + "Shipping1" + ( "UnitPrice1" * "Quantity1" ) + "SetupFee2" + "Shipping2" + ( "UnitPrice2" * "Quantity2" )) / ("Quantity1" + "Quantity2")

...或者只是平均两个单独的结果,虽然我不确定这会如何改变十进制值。

到目前为止,我已经完全在 LibreOffice Base 的设计视图中创建了这个视图,但如果我知道我要做什么,我并不反对使用 sql

编辑:LibreOffice 7.0 和嵌入式 HsqlDB 数据库

解决方法

好吧,我想我已经想通了,但我觉得应该有更简单的方法。

绝对必须深入研究有关此的 SQL 语句,但这似乎符合我的要求:

SELECT "Item Name",AVG("Adjusted Unit Price") AS "Average Adjusted Unit Price"
FROM (
    SELECT "Item"."ItemName" AS "Item Name",( "SetupFee" + "Shipping" + ( "UnitPrice" * "Quantity" ) ) / "Quantity" AS "Adjusted Unit Price"
    FROM "ItemInvoice","Item" WHERE "ItemInvoice"."ItemID" = "Item"."ItemID"
)
GROUP BY "Item Name"