SQL CASE语句返回错误

时间:2012-07-07 17:23:39

标签: sql case

您好我在DB2中选择了CASE语句:

case when actualfinish is not null then dec (( timestampdiff(
  4, 
  char(actualfinish - reportdate))/60.00),10,2)
else 'not'
 end

它返回错误。 如果我删除ELSE部分,则没有错误并且计算完成。

    case when actualfinish is not null then dec (( timestampdiff(
      4, 
      char(actualfinish - reportdate))/60.00),10,2)
end

如果我将那部分更改为类似

的部分
  case when actualfinish is not null then 'Yes'
    else 'not'
     end

也没有错误。

但是对于我的完整SQL查询 - 找不到错误。 感谢

1 个答案:

答案 0 :(得分:3)

这里的问题是dec函数在你返回VARCHAR的CASE语句的else部分返回一个十进制数据类型,因此是问题。

在你的第二个版本中 case when actualfinish is not null then 'Yes' else 'not' end

whenelse都返回相同的数据类型,因此查询运行正常。

更改你的else以发送十进制等值,它应该执行正常。

更新

如果您可以将十进制作为字符串返回,请使用此版本:

CASE 
    WHEN actualfinish IS NOT NULL THEN CHAR(DEC((TIMESTAMPDIFF(4, CHAR(actualfinish - reportdate))/60.00),10,2))
    ELSE 'not'
END