2

基本単位と変換単位の値を持つ単位の表があります

今、私は総面積と取得面積の値を持つ別のテーブルを持っていますが、値は異なる単位です総面積と取得面積をヘクタールに変換してからそれらを追加したい

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は、質問で2番目にリストされているテーブルです。ConvertingTableを最初に。

AreasをConvertingテーブルに結合して変換係数を取得し、次にソース単位に変換係数を掛けてヘクタール単位の出力を取得します。

また、変換テーブルにはヘクタールの基本単位のみが含まれていると想定しています。必要に応じて、他のものを非常に簡単に除外できます。

_1フィールドを含めるには、追加の結合が必要になります。

于 2013-02-07T08:31:01.303 に答える