1

CALC以下の TSQL クエリで値が計算されないのはなぜですか?

SELECT
    D1, D2, (D1+D2) As 'Sum', ((D1/(D1+D2))*100) As CALC
FROM
    (SELECT 3 As D1, 6 As D2) A

これは私が得る結果です:

D1          D2          Sum         CALC
----------- ----------- ----------- -----------
3           6           9           0
4

2 に答える 2

2

整数を整数で割ると整数が生成されるため、オペランドが両方とも整数の場合、除算演算によって結果の小数部分が切り捨てられます。1 つを float または decimal に変更して修正します。

Select 5 / 6, 5 / 6.0私が何を意味するかを見るために走っ てください

キャストでコードを修正...

 SELECT  D1, D2, (D1+D2) As 'Sum', 
    ((D1/ Cast(D1+D2 as Float))*100) As CALC
 FROM (SELECT 3 As D1, 6 As D2) A

または、値をフロートにして開始します。

 SELECT  D1, D2, (D1+D2) As 'Sum', 
    ((D1/ (D1+D2))*100) As CALC
 FROM (SELECT 3.0 As D1, 6.0 As D2) A
于 2013-05-09T17:37:46.307 に答える
1

整数除算は 0 に丸められて
いました。100 を移動します。まだ丸めが行われます。
丸めを許容できない場合は、整数を使用しないでください。

SELECT
    D1, D2, (D1+D2) As 'Sum', D1/(D1+D2) as frac, (D1*100)/(D1+D2) As pct
FROM
    (SELECT 3 As D1, 6 As D2) A
于 2013-05-09T17:42:54.053 に答える