0

您好我在 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

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

  case when actualfinish is not null then 'Yes'
    else 'not'
     end

也没有错误。

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

4

1 回答 1

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
于 2012-07-07T17:31:56.530 回答