我有以下CASE
表达式,并且该ISNULL
部分未注册:
CASE WHEN IsNull(2010) THEN 0 END) *
CASE WHEN IsNumeric([Dur_In_Hours]) = 1 THEN
CAST([Dur_In_Hours] AS FLOAT) ELSE 0 END) AS Cost
我有以下CASE
表达式,并且该ISNULL
部分未注册:
CASE WHEN IsNull(2010) THEN 0 END) *
CASE WHEN IsNumeric([Dur_In_Hours]) = 1 THEN
CAST([Dur_In_Hours] AS FLOAT) ELSE 0 END) AS Cost
不幸的是,您使用的IsNull()
功能错误。如果您正在测试列是否为空,那么您将使用:
CASE
WHEN 2010 is null
THEN 0
END
*
CASE
WHEN IsNumeric([Dur_In_Hours]) =1
THEN CAST([Dur_In_Hours] AS FLOAT)
ELSE 0
END AS Cost
如果要使用,IsNull()
则可以使用IsNull([2010], 0)
来替换该CASE
表达式:
IsNull([2010], 0)
*
CASE
WHEN IsNumeric([Dur_In_Hours]) =1
THEN CAST([Dur_In_Hours] AS FLOAT)
ELSE 0
END AS Cost
或者您可以使用COALESCE
替换第一个CASE
:
COALESCE([2010], 0)
*
CASE
WHEN IsNumeric([Dur_In_Hours]) =1
THEN CAST([Dur_In_Hours] AS FLOAT)
ELSE 0
END AS Cost