您好我在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查询 - 找不到错误。 感谢
答案 0 :(得分:3)
这里的问题是dec
函数在你返回VARCHAR的CASE语句的else部分返回一个十进制数据类型,因此是问题。
在你的第二个版本中
case when actualfinish is not null then 'Yes'
else 'not'
end
when
和else
都返回相同的数据类型,因此查询运行正常。
更改你的else以发送十进制等值,它应该执行正常。
更新
如果您可以将十进制作为字符串返回,请使用此版本:
CASE
WHEN actualfinish IS NOT NULL THEN CHAR(DEC((TIMESTAMPDIFF(4, CHAR(actualfinish - reportdate))/60.00),10,2))
ELSE 'not'
END