SQL Server クエリの計算を行っていますが、除算では常にゼロになります。
SUM(sl.LINES_ORDERED)
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED) / SUM(sl.LINES_ORDERED) AS 'Percent'
返されるサンプル データセットは次のとおりです。
この例では、3 行目の除算値は 1.02 である必要がありますが、0 として表示されています。何故ですか?
SQL Server クエリの計算を行っていますが、除算では常にゼロになります。
SUM(sl.LINES_ORDERED)
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED) / SUM(sl.LINES_ORDERED) AS 'Percent'
返されるサンプル データセットは次のとおりです。
この例では、3 行目の除算値は 1.02 である必要がありますが、0 として表示されています。何故ですか?
試す
SUM(sl.LINES_CONFIRMED) * 1.0 / SUM(sl.LINES_ORDERED)
整数除算は、浮動小数点数ではなく、完全な数のみを返すことができます。上記の例のように、浮動小数点除算を強制できます。
次のようにしてみてください。
SUM(sl.LINES_ORDERED)
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED)*1.0 / SUM(sl.LINES_ORDERED)
2つの問題はあなたが
SUM
返します)、LINES_ORDERED
これはあなたがそれを修正する方法です(そしてそれLINES_CONFIRMED
は交換されることに注意してください):
SUM(sl.LINES_ORDERED)
, SUM(sl.LINES_CONFIRMED)
, (1.0*SUM(sl.LINES_ORDERED)) / SUM(sl.LINES_CONFIRMED) AS 'Percent'
これは、2 つの整数を除算しているためです。
最初に除算の 2 つの値を 10 進数に変換します。
, SUM(convert(decimal(12,2),sl.LINES_CONFIRMED))
/ SUM(convert(decimal(12,2),sl.LINES_ORDERED)) AS 'Percent'