我想从以下声明中获得一个比率:
Select ((query1)/(query2)) AS Ratio.
结果为0.实际结果为.34 因此SQL四舍五入为零。我该如何解决这个问题?
答案 0 :(得分:1)
Select(
(SELECT 8) --<-- Query 1 returns INT 8
/
(SELECT 5) --<-- Query 2 returns INT 5
) AS Ratio
因为两个值都是INT但是在分割时你得到一个十进制值,Sql Server会隐式转换为INT并截断任何Decimal点并返回一个整数。
以上查询返回1
Select(
CAST((SELECT 8)AS NUMERIC(18,5)) --<-- Query 1 CAST as a DECIMAL or NUMERIC
/
CAST((SELECT 5) AS NUMERIC(18,5)) --<-- Query 2 CAST as a DECIMAL or NUMERIC
) AS Ratio
当转换为数字类型时,两个查询都会重新调整结果sql server会对通过划分查询和返回返回的结果进行隐式转换
结果:1.60000000000000000000