2017-05-31 3 views
1

私はアイテムの総コストを計算し、その値をコストと呼ばれる新しい列に入れようとしています。SQLはvarcharをお金に変換します

私の作成スクリプトでは、値は文字ですが、データタイプはお金です。

+0

テーブルの値を確認しましたか?数字以外のエントリはありますか? – SAS

+0

私はちょうどSQLの構文が間違っていることに気づいた、あなたはお金とお金を比較することはできません.. – SAS

答えて

3

concat()からお望みのことはありますか? concat()は、入力に基づいて3つの金額がスペースで区切られた文字列値を返します。 $1.00 $2.00 $0.50

金額と比較するとエラーが発生します。おそらく値を追加するだけだったのでしょうか?

(range_price + crust_surcharge + sauce_surcharge) as [cost] 

注:別名として文字列リテラルを使用しないでください。


また、あなたのwhere句は、結合されたサブクエリからmoneyデータ型に文字列リテラル('cost')を比較しています。

where --'cost' 
     (range_price + crust_surcharge + sauce_surcharge) 
       = (select Sum(CAST(range_price as money)) from pizza_range) 
      + (select Sum(CAST(crust_surcharge as money)) from crust) 
      + (select Sum(CAST(Sauce_surcharge as money)) from sauce) 

注:あなたは式を繰り返すか、サブクエリ/派生テーブルまたは他のオペレータからの発現を参照する必要があり、where句で列の別名を使用することはできません。

+0

ありがとうSQLZimは、私の問題のいずれかに答えた、大いに感謝 – MacGenius

+0

@MacGenius! – SqlZim

関連する問題