9

テーブルに整数値が入力された2つの列があります。レコードごとに、これら2つの列の値を分割し、小数点が右側に移動するように出力をフォーマットします。

たとえば、1つのレコードの2つの列の値が4と1で、1を4で除算したい場合(つまり1/4)、出力を25.00にします。

これが私が少し前に試した最後のことです:

CAST(Total AS Decimal(2))/CAST(TotalAnswers AS Decimal(2)) AS 'Percent' 

10進数に渡されたパラメーターが何を表すかを確認するためのCAST関数の構文上の説明を見つけることができませんでした。変更すると、小数点以下の桁数が変わることもありますが、必ずしも期待通りの結果とは限らないので、少し助けてもらいたいと思います。

4

4 に答える 4

22

このように書いてください:

SELECT CAST(CAST(Total As float) / TotalAnswers * 100 As decimal(8, 2))
于 2012-04-10T20:55:28.857 に答える
3

DECIMAL(2)は、小数点の前の2桁の小数であり、小数点の後の桁はありません。それでは、小数点以下の桁使用することはできません。

このDECIMAL(p,s)仕様では、合計桁数(p)と小数点以下の桁数()を定義していますssこれより大きくすることはできずp、省略した場合は0になります)。

DECIMAL(4,2)合計4桁-小数点以下2桁、したがって、小数点前2桁)などを使用する必要があります-小数点の前後のいくつかの桁-すると、次のように表示されます。望ましい結果!

DECIMALタイプとその構文の詳細については、10進数と数値に関するMSDNBooksOnlineのトピックを参照してください。

于 2012-04-10T20:49:38.193 に答える
2

実際にはいくつかのパラメータがあります。

(p, s)

どこ

  • pは「精度」 、つまり小数点の前後の合計桁数を表します。
  • sは、「スケール」(小数点以下の桁数)を表します。

1つのパラメーターのみを指定することにより、精度のみを指定することになります。

MDSNを参照してください。

于 2012-04-10T20:50:30.390 に答える
1

10進データ型のbook-onlineから:固定の精度とスケールを持つ数値データ型。

10進数[(p [、s])]および数値[(p [、s])]精度とスケール数を修正しました。最大精度を使用する場合、有効な値は-10 ^38+1から10^38-1までです。10進数のSQL-92同義語はdecおよびdec(p、s)です。数値は機能的には10進数と同等です。

p(精度)小数点の左側と右側の両方に格納できる小数点以下の最大桁数。精度は、1から最大精度38までの値である必要があります。デフォルトの精度は18です。

■(スケール)小数点の右側に格納できる小数点以下の最大桁数。スケールは0からpまでの値でなければなりません。スケールは、精度が指定されている場合にのみ指定できます。デフォルトのスケールは0です。したがって、0 <= s<=pです。最大ストレージサイズは、精度によって異なります。

于 2012-04-10T20:53:44.773 に答える