2017-05-11 1 views
0

私は理解しようとしているSQL文を(他人が書いた)いくつか持っています。このSQLでは、以下のように 'Weight'を計算します。C#ASP.netでSQL文のNULLIFとISNULLを処理する方法は?

ISNULL(NULLIF(CASE WHEN ISNULL(m.Override,0) = 1 
    THEN m.OverWeight 
    ELSE ISNULL(itemWeight.Weight,groupWeight.Weight) END,0),5) AS Weight 

このロジックをASP.netで使用する必要があります。私はC#、ASP.net、SQLの初心者ですから、苦労しています。私はこれまでのことを続けてきました。

//Calculate weight 
    bool override = DataConversion.GetBoolean(row["Override"]); 
    decimal overWeight = DataConversion.GetDecimal(row["OverWeight"]); 
    decimal itemWeight = DataConversion.GetDecimal(row["ItemWeight"]); 
    decimal groupWeight = DataConversion.GetDecimal(row["GroupWeight"]); 

    decimal weight= override? DataConversion.GetDecimal(row["OverWeight"]): 5; 

    var par = new par(
       Id: DataConversion.GetInt(row["MaterialId"]), 
       weight: weight 
       ); 

私が直面しています問題は、次のとおりです。 は、どのように私は私の条件文でELSE ISNULL(itemWeight.Weight,groupWeight.Weightを使うのですか? 、すなわちdecimal weight= override?DataConversion.GetDecimal(row["OverWeight"]): 5;です。

+1

私はそれを助けるのに十分なASP.netを知りませんが、その 'CASE'式はあまりにも複雑です。それは以下のように書き換えることができる: 'CASE WHEN \t m.Override = 1 THEN m.OverWeight \t WHEN ISNULL(itemWeight.Weight、groupWeight.Weight)= 0 THEN 5 \t ELSE ISNULL(itemWeight.Weight、groupWeight.Weight) END AS重量 – Lamak

答えて

2

私はそれが簡単に、より良いフォーマットで取り組むことを発見 - それは明確に何になります:

decimal weight;      // AS Weight 

if (override != null && override == 1) // WHEN ISNULL(m.Override,0) = 1 
{ 
    weight = overWeight;    // THEN m.OverWeight 
} 
else 
{ 
    if (itemWeight != null)   // ELSE ISNULL(...) 
     weight = itemWeight;   // itemWeight.Weight 
    else 
     weight = groupWeight;   // groupWeight.Weight 
} 

if (weight == 0)      // NULLIF(..., 0) 
{ 
    weight = 5;      // ISNULL(..., 5) 
} 

あなたの方法:私はこのコードを持って

ISNULL(
    NULLIF(
     CASE 
      WHEN ISNULL(m.Override,0) = 1 
       THEN m.OverWeight 
      ELSE 
       ISNULL(itemWeight.Weight,groupWeight.Weight) 
     END, 
     0 
    ), 
    5 
) AS Weight 

が今だけISNULLとNULLIFの定義を使用して実際のDBNullに対してテストする必要がありますが、データがどこから来るかによって異なります。

関連する問題