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部分で10進数のデータ型を返すことです。したがって、問題が発生します。

2番目のバージョンでは case when actualfinish is not null then 'Yes' else 'not' end

whenとは両方ともelse同じデータ型を返すため、クエリは正常に実行されます。

elseを変更して、10進数に相当する値を送信すると、正常に実行されます。

アップデート:

10進数を文字列として返すことができる場合は、このバージョンを使用してください。

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 に答える