我有一个单位表,其中包含基本单位和转换单位的值
现在我有另一个表,它的值是 Total Area 和 Acquired Area 但值是不同的单位我想将 Total Area 和 Acquired Area 转换为公顷,然后添加它们
我有一个单位表,其中包含基本单位和转换单位的值
现在我有另一个表,它的值是 Total Area 和 Acquired Area 但值是不同的单位我想将 Total Area 和 Acquired Area 转换为公顷,然后添加它们
SELECT SUM((t.Total_Area / (u.Converting_Unit / u.Base_Unit) +
(t.Total_Area1 / (u3.Converting_Unit / u3.Base_Unit)))) AS Sum_Total_Area,
SUM((t.Acquired_Area / (u2.Converting_Unit / u2.Base_Unit) +
(t.Acquired_Area1 / (u4.Converting_Unit / u4.Base_Unit)))) AS Sum_Acquired_Area,
MAX(u4.Base_UnitCode) AS Base_Unit
FROM dbo.Total t JOIN dbo.Units u ON t.Total_Area_UnitCode = u.Unit_Name
JOIN dbo.Units u2 ON t.Acquired_Area_UnitCode = u2.Unit_Name
JOIN dbo.Units u3 ON t.Total_Area_UnitCode1 = u3.Unit_Name
JOIN dbo.Units u4 ON t.Acquired_Area_UnitCode1 = u4.Unit_Name
SQLFiddle上的演示
因此,假设您无法修复数据结构:
SELECT Total_Area * TotalConvertingTable.Base_Unit / TotalConvertingTable.Converting_Unit AS TotalHectareArea
, Acquired_Area * AcquiredConvertingTable.Base_Unit / AcquiredConvertingTable.Converting_Unit AS AcquiredHectareArea
FROM
AreaTable
INNER JOIN
ConvertingTable AS TotalConvertingTable
ON
AreaTable.Total_Area_Unit_Code = TotalConvertingTable.Unit_Name
INNER JOIN
ConvertingTable AS AcquiredConvertingTable
ON
AreaTable.Acquired_Area_Unit_Code = AcquiredConvertingTable.Unit_Name
AreaTable 是您问题中列出的第二个表格。ConvertingTable 第一个。
我们将 Areas 加入 Converting 表以得到换算系数,然后将源单位乘以换算系数得到以公顷为单位的输出。
我们还假设转换表仅包含公顷的基本单位,如果需要,您可以非常简单地过滤掉其他任何内容。
要包含 _1 字段将需要额外的连接。