2

我有一个单位表,其中包含基本单位和转换单位的值

现在我有另一个表,它的值是 Total Area 和 Acquired Area 但值是不同的单位我想将 Total Area 和 Acquired Area 转换为公顷,然后添加它们

4

2 回答 2

2
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上的演示

于 2013-02-07T12:01:20.183 回答
1

因此,假设您无法修复数据结构:

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 字段将需要额外的连接。

于 2013-02-07T08:31:01.303 回答