-1

一連の一時テーブルを使用してデータを取得し、フォーマットしてから新しいテーブルに挿入するストアド プロシージャがあります。意味がないことはわかっていますが、null を '' (空白) または '-' ダッシュにフォーマットしようとしています。これはbcです。ゼロの値は、実際には実際の残高を表します。これを行うと、varchar を数値に変換するときにエラーが発生し続けます。

CASE 
WHEN ##TEMPTABLE.[Summary Category Definition] = 'In Storage' THEN '' 
WHEN ##TEMPTABLE.[L/C Amount] > 0 THEN ##TEMPTABLE.[L/C Amount] 
ELSE ''
END AS [L/C Amount]

私が試してみました:

CASE 
WHEN ##TEMPTABLE.[Summary Category Definition] = 'In Storage' THEN '' 
WHEN ##TEMPTABLE.[L/C Amount] > 0 THEN convert(varchar(20), ##TEMPTABLE.[L/C Amount]    )
ELSE ''
END AS [L/C Amount]

これは可能ですか?助けてくれてありがとう。

4

1 に答える 1

0

列が実際[L/C Amount]に既にVARCHAR. その場合、次のようにステートメントを変更する必要があります。

CASE 
    WHEN ##TEMPTABLE.[Summary Category Definition] = 'In Storage' 
        THEN '' 
    WHEN ##TEMPTABLE.[L/C Amount] <> '0' 
        THEN CONVERT(VARCHAR(20), ##TEMPTABLE.[L/C Amount]) -- why is this necessary?
    ELSE '' 
END AS [L/C Amount]
于 2013-01-18T17:18:22.010 に答える