2

重複の可能性:
このSQL Serverクエリ分割計算の何が問題になっていますか?

私はSQLで2つの値を次のように分割しています

SELECT SUM(totalCalls), 
    SUM(EnteredBTN), 
    SUM(EnteredBTN) * 100 / SUM(totalCalls),
    SUM(EnteredACC), 
    SUM(EnteredACC) / SUM(totalCalls), 
    SUM(SentToTrans),
    SUM(SentToTrans) * 100 / SUM(totalCalls),
    SUM(Complete_Information), 
    SUM(Complete_Information) * 100 / SUM(SentToTrans) 

SUM(EnteredACC)/SUM(totalCalls)つまり、7/ 48を実行すると、 .14が返されるはずですが、代わりに0が返されます。

私がそうするとき、それは14.58(または四捨五入されたときは15SUM(EnteredACC)*100/SUM(totalCalls) )を与えるはずですが、結果として14を与えます。誰か助けてもらえますか?

4

3 に答える 3

5

答えは単純で、おそらく列のデータ型でEnteredACCありtotalCallsINTまたはSMALLINTBIGINTなど)であるため、結果は。になりますINT。したがって、14.58は14になり、0.14は0になります。データ型にキャスト(暗黙的または明示的)を行う必要があります。

SUM(CAST(EnteredACC AS DECIMAL(16,4))/SUM(totalCalls)
于 2012-10-31T17:24:05.130 に答える
0

整数除算ではなく、浮動小数点除算が必要です。

SELECT SUM(totalCalls), 
    SUM(EnteredBTN), 
    SUM(EnteredBTN)*100/CAST(SUM(totalCalls) as FLOAT),
    SUM(EnteredACC), 
    SUM(EnteredACC)/SUM(totalCalls), 
    SUM(SentToTrans),
    SUM(SentToTrans) * 100 / SUM(totalCalls),
    SUM(Complete_Information), 
    SUM(Complete_Information) * 100 / CAST(SUM(SentToTrans) as FLOAT)
于 2012-10-31T17:23:37.147 に答える
0

試す:select cast(cast(7 as decimal(18,2))/cast(48 as decimal(18,2)) as decimal(18,2))

于 2012-10-31T17:22:20.080 に答える