2016-12-06 5 views
1

2つの値を乗算しようとしています。 1つは小数点、もう1つは数値です。SQLクエリの乗算10進数

例 - 合計は、私が欲しいものです:

私のSQLクエリで
Number Decimal Total 
900  1.111 999.9 
800  1.25  1000 
460  4.25  1955 

、私は次のことを試してみた:

(ISNUMERIC(UpgradeEmptyNodesPercentageLimitForAllocation) * RawTotalNodes) as ExpectedEmptyNodeCountForUpgrade 

しかし、それは常に数を返します。上記はどうですか?

おかげで...

+0

現在の出力は何ですか? – phil652

+0

ISNUMERIC関数は、UpgradeEmptyNodesPercentageLimitForAllocationが有効な数値データ型に評価される場合は1を返します。そうでない場合は0を返します。なぜ関数の結果にRawTotalNodesを掛けますか? – domenicr

+0

UpgradeEmptyNodesPercentageLimitForAllocationを変更することを意味します。 ISNUMERICを削除すると... ******の値 '******'をデータ型******に変換すると、変換に失敗しました。 – emie

答えて

0

彼らはゼロであるならば、SQLは小数

DECLARE @d1 DECIMAL(18,0) = 1.111 
DECLARE @d2 DECIMAL(18,10) = 1.111 


SELECT @d1,@d2 
0

ISNUMERICを削除します、あなたのデータ型のスケールを確認し、文字列ではなく、数タイプを評価するために実際にある - と0または1が返されます。私はあなたがしたいと思うより多くの精度を持つ1つに数値や小数点以下の値のCASTですし、それを乗算することです。操作に影響を与えるのは、保存されている操作の両方の要素の精度とスケールです。

これらのタイプは、実際には互換性がありますが、精度と位取りは異なります。

NUMERICの精度とスケールの両方をキャストしてから、乗算してみてください。または、精度とスケールが常に機能しない場合は、REALにキャストしてください(オプションの場合)。

Read more on MSDN