2016-08-08 22 views
0

Ich habe versucht, dies zu konvertieren, aber leider funktioniert es nicht. Ich konvertiere Einheiten wie KG, LT, Stück usw.Einheitenumrechnung in SQL Server

Ich habe einen Umrechnungsfaktor.

Die Tabelle, die i umwandeln möchte, wie folgt:

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

es ist wie 1 Stück = 16 KG oder 1 Stück = 16 Liter und 1 Stück = 1 Stück

Ich habe versucht, der erste Teil, dh Alternative Unit und versucht, es zu konvertieren .. es tut nur für KG, aber nicht für andere, dh LT und Stück.

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 

Es handelt sich um die Konvertierung für AlternativeUnit. Zuerst überprüft es das Gerät. Wenn beide gleich sind, multipliziert es die Menge mit der Umwandlungsrate und überprüft alle Einheiten.

Antwort

0

Sie Struktur scheint falsch. Ich denke, sollte

sein
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

Ich versuchte mit Ihrem Format .. aber es zeigt nur die Werte für ST und nicht für KG oder LT an. – naturalCoder

+0

Ich habe nur auf die Struktur Ihrer Abfrage geschaut ... überprüfen Sie, ob Sie den richtigen Wert in DB haben .. – scaisEdge