2016-08-08 6 views
0

私はこれを変換しようとしましたが、残念ながらそれは動作しません。私はKG、LT、ピースなどの単位を変換しています。SQL Serverのユニット変換

変換係数があります。

次のように私が変換したいテーブルである:私が試み

conversion_factor_X Alternative_Unit conversion_factor_Y Unit 
--------------------------------------------------------------------- 
      16    KG     1    Piece 
      16    LT     1    Piece 
      1    Piece    1    Piece 

それは1個= 16 kg、または1個= 16リットルと1つのピースのようなものだ= 1片最初の部分、すなわちオルタナティブユニットとそれを変換しようとしました..それはKGのためにのみではなく、他のもの(すなわちLTとPiece)ではありません。

select 
    --AlternativeUnit 
    case 
     when stock = 0 
      then 0 
     else 
      case qty_unit_target 
      when 'KG' 
       then 
        case qty_unit_stock 
         when 'KG' 
          then qty_stock * qty_x 
         when 'ST' 
          then 
           case qty_unit_stock 
           when 'ST' 
            then qty_stock * qty_x 
           when 'LT' 
            then 
             case qty_unit_stock 
              when 'LT' 
              then qty_stock * qty_x 
             end 
           end 
        end 
      end 
    end 
from 
    xyz 

これはAlternativeUnitの変換です。まず、ユニットをチェックします。両方が同じ場合は、qtyに換算率を乗算し、すべての単位をチェックします。

答えて

0

構造が間違っているようです。私はだと思う

select 

--AlternativeUnit 
case when stock = 0 
then 0 
else 
    case qty_unit_target 
     WHEN 'KG' then CASE qty_unit_stock WHEN 'KG' THEN qty_stock * qty_x END 
     WHEN 'ST' then CASE qty_unit_stock WHEN 'ST' THEN qty_stock * qty_x END 
     WHEN 'LT' then CASE qty_unit_stock WHEN 'LT' THEN qty_stock * qty_x END 
    END 
END 
from xyz 
+0

あなたのフォーマットで試してみましたが、それはSTの値だけを表示し、KGやLTは表示しません。 – naturalCoder

+0

私はあなたのクエリの構造だけを見てきました...あなたがdbで適切な値を持っているかどうかをチェックしてください。 – scaisEdge