2016-05-11 18 views
1

除算演算子のために無効であると私はかなり基本的な質問があります。オペランドのデータ・タイプVARCHARは、私はちょうどSQLを使用し始めました

私は2列(金額/割合)を分割しようとしたんだ - 私はお金」からそれらを変換しますINT 『'を』私が実行しようとしたとき、それは私にこのエラーを与えた:

Operand data type varchar is invalid for divide operator.

これは私が入力したクエリです:

select referenceid, 
     CONVERT(decimal(15,3), sellamount) as 'amount', 
     convert(decimal(15,3), rateactual) as 'Rate', 
     convert(decimal(15,3),'amount'/'rate') as 'local amount' 
FROM currencyfxconversions 

誰かが私が間違って何をしたか理解するのに役立つことはできますか?

+0

''レート'は' varchar'型です..あなたは 'convert(decimal(15,3)、 'amount'/convert(decimal(15,3)、rateactual)'を使う必要があります。 – Wanderer

+1

sql-serverとMySqlは2つの異なる製品です –

+1

あなたは何をしようとしていますか? 'rate'は文字を含む文字列ですエイリアス名を使用する場合は、 "rate"のような標準の二重引用符を使用してください。 "r"、 "a"、 "t"、 "e" - 単一引用符は文字列リテラル用ですが、値を評価する順番がないため、別名を同じselect句で使用することはできません(つまり、 ''ローカル量 ''としての行は'' amount "'の前に実行してください)。 –

答えて

5

、このように上記のクエリで

SELECT referenceid 
    ,CONVERT(DECIMAL(15, 3), sellamount) AS 'amount' 
    ,convert(DECIMAL(15, 3), rateactual) AS 'Rate' 
    ,convert(DECIMAL(15, 3), (CONVERT(DECIMAL(15, 3), sellamount)/convert(DECIMAL(15, 3), rateactual))) AS 'local amount' 
FROM currencyfxconversions 
+0

ありがとう、私は試みた:(小数点(15,3)、sellamount)/変換(小数点(15,3)、rateactual))とそれが働いた:) – Meital

0

を試してみてください "に変換(小数(15,3)、 '量'/'率')は、" 変換(CONVERT(DECIMAL(15で置き換える必要があります、3)、sellamount)/ convert(10進数(15,3)、rateactual))

+0

ありがとう、それは非常に役立った!私はあなたが提案したものの、最初の "CONVERT"を削除し、それは働いた:) – Meital

0

あなたのフォルトは同じコンテキストで使用する列を使用しています。 Selectコンテキストでエイリアスをテーブルの列として使用することはできません。最後のエイリアスクエリを繰り返す必要があります。

SELECT referenceid 
,CONVERT(DECIMAL(15, 3), sellamount) AS 'amount' 
,convert(DECIMAL(15, 3), rateactual) AS 'Rate' 
,convert(DECIMAL(15, 3), (CONVERT(DECIMAL(15, 3), sellamount)/convert(DECIMAL(15, 3), rateactual))) AS 'local amount' 
関連する問題