このクエリを実行しようとしていますが、数学的計算を行った後に数値が適切にフォーマットされていないようです。スケールは 2 である必要がありますが、表示されません。
SELECT 30 / 60 as Diff FROM Table
これは次のように返されます0
SELECT Convert( Numeric(8,2), 30 / 60 ) as Diff FROM Table
これは次のように返されます0.00
必要に応じてこれを返すにはどうすればよい0.50
ですか?
このクエリを実行しようとしていますが、数学的計算を行った後に数値が適切にフォーマットされていないようです。スケールは 2 である必要がありますが、表示されません。
SELECT 30 / 60 as Diff FROM Table
これは次のように返されます0
SELECT Convert( Numeric(8,2), 30 / 60 ) as Diff FROM Table
これは次のように返されます0.00
必要に応じてこれを返すにはどうすればよい0.50
ですか?
以下を試すことができますが、それを達成する方法はいくつかあります。フィールド自体で変数を使用するか、単に を実行し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 の記事を参照してください。
除算を行う前に数値に変換するか、整数ではなく実数を除算します。整数演算を行う場合、小数はすべて削除されます。分数が削除された後に変換しても、何の役にも立ちません。
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
(両方を変換して、必要な規則に従って除算が行われるようにします)