我查看了这篇文章:How to convert integer to decimal in SQL Server query?但它并没有像我预期的那样。
我有一个简单的等式 - ( [X] - [Y] ) / [X]
,其中X和Y是列中的任意int
值。我想将结果存储为十进制,包括1(或100%)。但是当我尝试查询时,我似乎没有得到我期望的结果。如果我使用下面的查询 - 我得到0。
到目前为止,这是我的查询:
CONVERT(DECIMAL(3, 2), (s4.Duration - s2.Interruption_Min_Total) / s4.Duration) AS Percentage
如果您需要查看更多我的实际查询,请询问 - 如果需要,我会发布。
对此的任何帮助将不胜感激。
答案 0 :(得分:2)
您需要强制SQL Server将除法中使用的int
转换为小数,然后SQL Server将返回小数:
DECLARE @v1 INT;
DECLARE @v2 INT;
DECLARE @v3 INT;
SET @v1 = 5;
SET @v2 = 2;
SET @v3 = 4;
SELECT (@v1 - @v2) / @v3;
SELECT (@v1 - @v2) / CONVERT(DECIMAL(10,2), @v3);
请查看this问题的答案。