2016-12-16 4 views
0

次のいずれかが予想される場合は、シンボル「THEN」が発生しました。* & - +;/modで残りのremと||マルチセット次のいずれかを予期しているときにシンボル「THEN」が発生しました

CASE 
     WHEN CLAIMNUMBER = 311754 AND POLICY_NUMBER = 21620 THEN    cast(CLAIMNUMBER as varchar2(10)) + 'M' 
        WHEN CLAIMNUMBER = 317802 AND POLICY_NUMBER = 15571 THEN cast(CLAIMNUMBER as varchar2(10)) + 'M' 
       WHEN CLAIMNUMBER = 318794 AND POLICY_NUMBER = 19325 THEN cast(CLAIMNUMBER as varchar2(10)) + 'M' 
     WHEN CLAIMNUMBER = 319510 AND POLICY_RECORD_ID = '21294_19' THEN cast(CLAIMNUMBER as varchar2(10)) + 'M' 
      ELSE 
       cast(CLAIMNUMBER as varchar(10)) 
      END AS CLAIMNUMBER, 
+1

のようになります。' || 'なく' + 'です。また、より大きなSQLクエリのこの部分ですか?あなたは完全な質問を共有できますか? –

+0

また、 'CLAIMNUMBER 'のデータ型を教えてください –

+0

なぜ' to_char'ではなく 'cast'を使うのですか? – Kacper

答えて

0

CLAIMNUMBERと仮定すると、数値データ型があり、この問題の最も可能性の高い原因は、連結演算子として+の使用です。代わりに||を使用して文字列を連結すれば、クエリは正常に動作します。洗練されたクエリは、OracleのPL SQLまたはSQLで+「M'` に `キャスト(VARCHAR2などCLAIMNUMBER(10))をチェック構文を連結してください

以下
select CASE 
      WHEN CLAIMNUMBER = 311754 AND POLICY_NUMBER = 21620 THEN cast(CLAIMNUMBER as varchar2(10)) 'M' 
      WHEN CLAIMNUMBER = 317802 AND POLICY_NUMBER = 15571 THEN cast(CLAIMNUMBER as varchar2(10)) || 'M' 
      WHEN CLAIMNUMBER = 318794 AND POLICY_NUMBER = 19325 THEN cast(CLAIMNUMBER as varchar2(10)) || 'M' 
      WHEN CLAIMNUMBER = 319510 AND POLICY_RECORD_ID = '21294_19' THEN cast(CLAIMNUMBER as varchar2(10)) || 'M' 
      ELSE 
        cast(CLAIMNUMBER as varchar2(10)) 
     END AS CLAIMNUMBER1 
+0

を解決しました。皆さん、ありがとうございました。 – Shum

関連する問題