2012-05-09 118 views
0

我想要做什麼似乎是一個基本的int到小數,並且它不工作。我已經試過在插入之前執行演員,沒有更好的。我想使用十進制值來顯示百分比變化。代碼如下,以及輸出。任何幫助將是巨大的..SQL Server 2008 R2,麻煩鑄造int到十進制

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((@[email protected]) AS DECIMAL)/CAST(@priorCount AS DECIMAL), 
    CAST((@[email protected]) AS DECIMAL)/CAST(@avgAllCounts AS DECIMAL)) 

SELECT * FROM @tblVar 

輸出:

19548 
7107 
8483 

LatestCount PriorCount PctChgLatestVsPrior PctChgLatestVsAvg 
7107  8483  0     -1 
+2

「它不工作」不是對實際問題的很好描述。 **什麼**不起作用?究竟? – Oded

+0

評論的部分先於「它不工作」。演員。 – StatsViaCsh

回答

6

你需要給小數秤/精密

在這裏看到:Decimal and Numeric problems when you don't specify precision and scale

一些例子:十進制(30, 10)或DECIMAL(20)

查看更多書籍在線http://msdn.microsoft.com/en-us/library/ms187746.aspx

+2

+1 OP應該試試這個:'SELECT CONVERT(DECIMAL,3.567);'並且讀取它(當然同樣適用於'DECIMAL'):http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10 /09/bad-habits-to-kick-declaring-varchar-without-length.aspx –

+0

謝謝...我在一個簡單的select語句中有非常相似的代碼,它的工作方式與我的預期相同,也許它在存儲過程中執行的方式不同。 – StatsViaCsh