2016-09-21 37 views
0

ELSEブロックの数値列に ' - 'と表示する簡単なCASE文があります。 しかし、それは私にエラーを与えるCASE文で数字の表示文字列の代わりに ' - 'を使用する方法

Arithmetic overflow error converting varchar to data type numeric. 

私はそれをどのように行うのでしょうか? は、私はこのようにそれをしたい: enter image description here

ここ
SELECT 
      CASE WHEN ChargeName = 'Premium' THEN CompanyCommissionPercentage ELSE '-' END AS CompanyCommissionPercentage 
      ,CASE WHEN ChargeName = 'Premium' THEN RemitterCommissionPercentage ELSE '-' END AS RemitterCommissionPercentage 
      ,CASE WHEN ChargeName = 'Premium' THEN RemitterCommission ELSE '-'END AS RemitterCommission 
      ,CASE WHEN ChargeName = 'Premium' THEN GrossCommission ELSE '-'END AS GrossCommission 
FROM @tmpAccountsPayable 

答えて

2
`SELECT 
      CASE WHEN ChargeName = 'Premium' THEN CAST(CompanyCommissionPercentage as varchar(10)) ELSE CAST('-' as varchar(10)) END AS CompanyCommissionPercentage 

FROM @tmpAccountsPayable` 
+0

うん。結果セットは1つの列に対して1つのデータ型しか持てません。遭遇した最初の値は数値なので、列は数値に設定されます。システムは暗黙的に - を数値にキャストしようとします。したがって、エラーが発生します。したがって、数値をvarcharデータ型にキャストすると、これまでのように問題が解決されます。注: ' - 'をvarchar(10)にキャストする必要はありません。これはすでに文字データです。 – xQbert

+0

このシンプルなことについて知らなかった。説明をありがとう。 – Oleg

+0

助けてくれてうれしいです。あなたは何をすべきか把握することができてうれしいです。私がしたのはなぜなのかということでした。なぜ私が助けてくれるのか知っています!注:Excelでは、 - ではなく0を渡すことができ、Excelでフォーマット中のゼロをダッシュ​​として扱わせることができます。私はそれが会計のスタイルと呼ばれていると信じています(または、ホームメニューのツールバーから '、'を選択してください) - – xQbert

0

Excelであなたに書式を設定することができる場所の絵だ-

あなたはダッシュの代わりにゼロを渡したほうが良いかもしれ0を作るためにフォーマットを行うことを可能にする - (もちろん、出力が優れていると仮定して)

下記のE20の値は、会計フォーマット(カンマフォーマット) 使用されている。

また、アカウンティングがインデントされている間、正規ダッシュがどのように左揃えになっているかに注目してください。

enter image description here

関連する問題