我想创建一个存储过程,在其中我想从表中求和总面积(列名),但必须从单位表(其他表)中检查其单位,如果单位不是基本单位,则应将其转换为基本单位首先计算总和。单位表是
提前谢谢
您要做的是加入单位表。但是,由于可能没有匹配项,请使用左外连接,然后使用该coalesce()
函数检查 NULL 值。我认为它应该是这样的:
select sum(t.area) * coalesce(u.Converting_unit, 1.0)/coalesce(u.Base_unit, 1.0) as TotalArea
from t left outer join
units u
on t.unit_code = u.unit_code
老实说,我对这种方法有点警惕,因为它需要转换为单位的一致性。就像是:
select sum(t.area) * coalesce(u.Converting_unit, 1.0)/coalesce(u.Base_unit, 1.0) as TotalArea,
u.base_unitcode
from t left outer join
units u
on t.unit_code = u.unit_code
group by u.base_unitcode
似乎更安全。
我也不明白您如何将英尺和米等线性度量转换为公顷等面积度量。这表明您选择的单位存在问题。