6

SQL Server クエリの計算を行っていますが、除算では常にゼロになります。

SUM(sl.LINES_ORDERED) 
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED) / SUM(sl.LINES_ORDERED) AS 'Percent'

返されるサンプル データセットは次のとおりです。

ここに画像の説明を入力

この例では、3 行目の除算値は 1.02 である必要がありますが、0 として表示されています。何故ですか?

4

4 に答える 4

28

試す

SUM(sl.LINES_CONFIRMED) * 1.0 / SUM(sl.LINES_ORDERED)

整数除算は、浮動小数点数ではなく、完全な数のみを返すことができます。上記の例のように、浮動小数点除算を強制できます。

于 2012-08-16T10:26:25.450 に答える
3

次のようにしてみてください。

SUM(sl.LINES_ORDERED) 
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED)*1.0 / SUM(sl.LINES_ORDERED)
于 2012-08-16T10:26:28.800 に答える
2

2つの問題はあなたが

  1. 整数除算を実行し(整数をSUM返します)、
  2. 被除数と除数を入れ替えました(そのため、1ではなく0になります)。

LINES_ORDEREDこれはあなたがそれを修正する方法です(そしてそれLINES_CONFIRMEDは交換されることに注意してください):

SUM(sl.LINES_ORDERED) 
, SUM(sl.LINES_CONFIRMED)
, (1.0*SUM(sl.LINES_ORDERED)) / SUM(sl.LINES_CONFIRMED) AS 'Percent'
于 2012-08-16T10:28:00.157 に答える
1

これは、2 つの整数を除算しているためです。

最初に除算の 2 つの値を 10 進数に変換します。

, SUM(convert(decimal(12,2),sl.LINES_CONFIRMED)) 
/ SUM(convert(decimal(12,2),sl.LINES_ORDERED)) AS 'Percent'
于 2012-08-16T10:27:14.867 に答える