0

私は700で出てくる次のSQLクエリを持っています

declare @a decimal(10,0)
declare @b decimal(10,0)

set @a = 100 - 2 
set @a = @a / 14
set @a = @a * 100

set @a = ((100 - 2) / 14) * 100

select @a

私が探しているのは、85.714285などを返すことです...

どこが間違っているのかよくわかりません。

ありがとう

4

4 に答える 4

1

あなたの宣言は間違っています:

declare @a decimal(10,0)
declare @b decimal(10,0)

長さを指定しましたが、小数点以下の桁数は指定しませんでした。これは、2 番目の値を使用して行われます。

于 2012-04-19T11:21:19.260 に答える
0

すべての整数を使用すると、SQL は暗黙的に結果を int としてキャストするため、最後の行の末尾に .0 を追加します。

set @a = ((100 - 2) / 14) * 100.0
于 2012-04-19T11:19:51.880 に答える
0

小数点以下の桁数を含めるように宣言を変更します。

declare @a decimal(10,5)
declare @b decimal(10,5)

set @a = 100 - 2 
set @a = @a / 14
set @a = @a * 100

set @a = ((100 - 2) / 14) * 100

select @a

宣言が に設定されて10,0いるため、小数点以下の桁数は取得されません。

答えを 85.714... にしたい場合は、SQL を次のように変更する必要があります。

declare @a decimal(10,5)

set @a = 100.0 - 2.0 
set @a = @a / 14.0
set @a = @a * 100.0

set @a = 100.0 - ((2.0 / 14.0) * 100.0)

select @a

探している結果を得るには.、他の値 (2、14 など) に a を追加する必要があり、必要な値が得られます。括弧が正しい位置にあることも確認する必要があります。

結果 - 85.71430

于 2012-04-19T11:22:08.323 に答える
0

700が正しい結果です。

再度確認してください!

((100 - 2) / 14) * 100 = 700

あなたはそれを計算しました

100 - 2 / 14 * 100 = 85,...

このSQLクエリを使用したいと考えています。

set @a = 100 - 2.0 / 14 * 100
于 2012-04-19T11:23:53.847 に答える