0

int から 10 進数への基本的なキャストのように見えることをしようとしていますが、うまくいきません。インサートの前にキャストを実行して実験しましたが、良くありません。小数値を使用して変化率を表示したいと考えています。以下にコードと出力を示します。どんな助けでも素晴らしいでしょう..

DECLARE @tblVar TABLE (LatestCount INT, PriorCount INT, 
                       PctChgLatestVsPrior DECIMAL, PctChgLatestVsAvg DECIMAL)

DECLARE @tbl CHAR(30)
DECLARE @dte DATE
DECLARE @dte2 DATE
DECLARE @latestCount INT
DECLARE @priorCount INT
DECLARE @avgAllCounts INT

SET @tbl = 'tblDailyPricingAndVol'
SET @dte = '5/8/12'
SET @dte2 = '5/7/12'

EXEC spAvgOfCountByDateAddedByTable @tbl, @avg = @avgAllCounts OUTPUT
EXEC spCountOfDateAddedByTableAndDate @tbl, @dte, @count = @latestCount OUTPUT
EXEC spCountOfDateAddedByTableAndDate @tbl, @dte2, @count = @priorCount OUTPUT

INSERT INTO @tblVar 
VALUES (@latestCount, @priorCount, 
    CAST((@latestCount-@priorCount) AS DECIMAL)/CAST(@priorCount AS DECIMAL), 
    CAST((@latestCount-@avgAllCounts) AS DECIMAL)/CAST(@avgAllCounts AS DECIMAL))

SELECT * FROM @tblVar

出力:

19548
7107
8483

LatestCount PriorCount  PctChgLatestVsPrior PctChgLatestVsAvg
7107        8483        0                   -1
4

1 に答える 1

6

あなたは小数のスケール/精度を与える必要があります

ここを参照してください:精度とスケールを指定しない場合の10進数と数値の問題

いくつかの例:DECIMAL(30,10)またはDECIMAL(20)

詳細については、Books OnLinehttp://msdn.microsoft.com/en-us/library/ms187746.aspxを参照してください。

于 2012-05-09T20:15:15.367 に答える