2015-07-10 100 views
0

我想分成两列的总和和SQL是不给我十进制精确数字。请检查下面的查询。我不知道我在这里错过了什么。收款人和TOTAL的SQL Server的 - 分列总和

数据类型是十进制(10,2)

查询

SELECT SUM(PAYEES) AS SUM_PAYEES,SUM(TOTAL) AS SUM_TOTAL,SUM(PAYEES)/SUM(TOTAL) AS DIVISION FROM #ADMIN_FEE_1 

SUM_PAYEES SUM_TOTAL DIVISION 
19940.00 59435.00 0.335492 

SELECT 19940.00/59435.00 AS DIVISION 

DIVISION 
0.3354925548 

这是在SQL Server中的错误?有没有办法得到正确的答案? 任何帮助表示赞赏。由于

+1

哪些类型的收款人/总的来说LDS?因为'sum/sum'版本受到这些字段所要求的任何类型转换的约束。你的'select 1994'只是分成两个硬编码的浮点数,所以你得到一个浮点数。 –

+0

您可以隐式转换为类型 - >/CONVERT(SUM(TOTAL)AS DECIMAL(18,2)) –

+0

@MarcB我刚刚更新了问题 –

回答

0

尝试将其转换为decimal型像下面

SELECT SUM(PAYEES) AS SUM_PAYEES, 
SUM(TOTAL) AS SUM_TOTAL, 
CAST(SUM(PAYEES)/SUM(TOTAL) AS DECIMAL(12,10)) AS DIVISION 
FROM #ADMIN_FEE_1; 
+0

这给我的分区为 - 0.335492000000000000。我想要0.3354925548。 –

+0

尝试改变精度值 – Rahul

1

尝试

SELECT SUM(PAYEES) AS SUM_PAYEES, 
SUM(TOTAL) AS SUM_TOTAL, 
cast(SUM(PAYEES) as decimal(18,10))/cast(SUM(TOTAL) AS DECIMAL(18,10)) AS DIVISION 
FROM #ADMIN_FEE_1; 

EDIT2:

测试查询

SELECT SUM(19940.00) AS SUM_PAYEES,SUM(59435.00) AS SUM_TOTAL,cast(SUM(19940.00) as decimal(18,10))/ 
cast(SUM(59435.00) as decimal(18,10)) AS DIVISION 
+0

这工作对我来说!谢谢 –

+0

欢迎:) –