0

このクエリを実行しようとしていますが、数学的計算を行った後に数値が適切にフォーマットされていないようです。スケールは 2 である必要がありますが、表示されません。

SELECT 30 / 60 as Diff FROM Table

これは次のように返されます0

SELECT Convert( Numeric(8,2), 30 / 60 ) as Diff FROM Table

これは次のように返されます0.00

必要に応じてこれを返すにはどうすればよい0.50ですか?

4

2 に答える 2

3

以下を試すことができますが、それを達成する方法はいくつかあります。フィールド自体で変数を使用するか、単に を実行しCASTます。CONVERT

 SELECT (CAST(30 AS DECIMAL(8,2)) / CAST(60 AS DECIMAL(8,2))) as Diff FROM Table

 SELECT (CAST(30/60) AS DECIMAL(8,2)) as Diff FROM Table

 SELECT (30/60.0) as Diff FROM Table;

 SELECT CONVERT(DECIMAL(8,2), 30/60.0) as Diff FROM Table

詳細については、次のMSDN の記事を参照してください

于 2012-12-01T04:26:13.017 に答える
1

除算を行う前に数値に変換するか、整数ではなく実数を除算します。整数演算を行う場合、小数はすべて削除されます。分数が削除された後に変換しても、何の役にも立ちません。

SELECT CONVERT(NUMERIC(8,2),30.0/60.0) AS DIFF FROM TABLE

または、数値を使用する代わりに列を選択する場合

SELECT CONVERT(NUMERIC(8,2),columnA)/CONVERT(NUMERIC(8,2),columnB) AS DIFF FROM TABLE

(両方を変換して、必要な規則に従って除算が行われるようにします)

于 2012-12-01T04:24:51.883 に答える