【发布时间】:2017-05-11 16:10:59
【问题描述】:
我有一些我想要理解的 SQL 语句(由其他人编写)。在此 SQL 中,它计算“重量”,如下所示。
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;。
【问题讨论】:
-
我不太了解 ASP.net 来帮助您解决这个问题,但
CASE表达式过于复杂。可以改写为:CASE WHEN m.Override = 1 THEN m.OverWeight WHEN ISNULL(itemWeight.Weight,groupWeight.Weight) = 0 THEN 5 ELSE ISNULL(itemWeight.Weight,groupWeight.Weight) END AS Weight
标签: c# asp.net sql-server nullif