SQL Server 2008 r2,麻烦将int转换为十进制

Sta*_*Csh 0 sql-server 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((@latestCount-@priorCount) AS DECIMAL)/CAST(@priorCount AS DECIMAL), 
    CAST((@latestCount-@avgAllCounts) AS DECIMAL)/CAST(@avgAllCounts AS DECIMAL))

SELECT * FROM @tblVar
Run Code Online (Sandbox Code Playgroud)

输出:

19548
7107
8483

LatestCount PriorCount  PctChgLatestVsPrior PctChgLatestVsAvg
7107        8483        0                   -1
Run Code Online (Sandbox Code Playgroud)

SQL*_*ace 6

你需要给出十进制比例/精度

请参见此处:未指定精度和比例时的十进制和数字问题

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

在线上阅读更多内容http://msdn.microsoft.com/en-us/library/ms187746.aspx

  • +1 OP应该尝试这样:`SELECT CONVERT(DECIMAL,3.567);`并读取它(当然适用于`DECIMAL`):http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/ 09 /坏习惯,对开球声明,VARCHAR,而无需-length.aspx (2认同)