我在访问中有一张名为发票的表。
它有一个基于两个字段执行计算的字段。这是field_price * field_Quantity。现在我添加了两个新列,其中包含field_weight和field_quantity的度量单位,名为field_priceUnit和field_quantityUnit。
现在不是仅仅使用乘法来执行计算,而是希望它看看度量单位是否匹配,它是否匹配然后它应该将field_quantity转换为field_priceUnit的度量单位
示例:
ROW1: ID:1 | Field_Quantity:23 | field_quantityUnit:LB | Field_weight:256 | field_priceunit:KG | field_price:24 | Calculated_Column:
calculated_column应该以这种方式进行计算。 1.如果field_quantityunit = LB且field_priceunit = LB则field_quantity * field_price
否则
如果field_quantityUnit = LB且field_priceUnit = KG 然后((field_quantity / 0.453592)* field_price)<<
请帮帮我。
我必须在多种情况下这样做。 Field_priceunit可能具有LB,KG和MT的值 Field_quantityUnit可以包含LB,KG和MT
字段如果两个单位都不匹配,那么我想进行转换并根据示例中所示的新对流进行计算。
谢谢
答案 0 :(得分:1)
如果您的单位仅为lb
和kg
而且您只需检查一个方向,则以下公式可让您开始运行:
iif(and(field_quantityunit='LB', field_priceunit='LB'), field_quantity*field_price, (field_quantity/0.453592)*field_price)
虽然您可能需要转换field_price或者您可以添加其他单位,但这不能很好地扩展。这个iif
公式会迅速失控。
而是创建一个名为unit_conversion
的新表或任何你喜欢的表:
unit | conversion
lb | .453592
kg | 1
g | 1000
mg | 1000000
现在在您的查询中加入:
LEFT OUTER JOIN unit_conversion as qty_conversion
ON field_quantityunit = qty_conversion.unit
LEFT OUTER JOIN unit_conversion as price_conversion
On field_priceUnit = price_conversion.unit
在查询的SELECT部分中,您现在可以执行以下操作:
(field_quantity * qty_conversion.conversion) * (field_price * price_conversion.conversion)
你不必担心单位是什么。它们都会转换成一公斤并且成倍增加。
如果你愿意的话,你可以把所有东西都转换成一磅或者任何单位的重量,但是好的是,你只需要在你的转换表中添加新的单位来处理它们你用这种方式编写的任何sql它非常具有可扩展性。