SQL Server 数据类型
使用场景:
在进行多维度汇总数据时,需要将不同数据类型,不同数据精度的数据合并成一张表时,相关计算出现精度丢失问题。
问题排查:
在进行分段排查后,找到丢失原因,SUM函数造成精度丢失
场景在现:
1. 创建表
CREATE TABLE A_TEST
(
ID_CODE NVARCHAR(10),
VAR1 DECIMAL(17,0) -- DECIMAL(17,0) 做为数量使用 小数位为0,※1 问题
)
CREATE TABLE B_TEST
(
ID_CODE NVARCHAR(10),
VAR2 DECIMAL(19,4) -- 带小数位
)
CREATE TABLE C_TEST
(
ID_CODE NVARCHAR(10),
VAR3 INT -- 整型 例证
)
2. 插入数据
INSERT INTO A_TEST SELECT 'A001',17 ;
INSERT INTO B_TEST SELECT 'B001',123.4567 ;
INSERT INTO C_TEST SELECT 'C001',15 ;
3. SQL各出力结果
① 出力 .0000
select var1 from A_TEST -- DECIMAL(17,0)
union all
select var2 from B_TEST -- DECIMAL(19,4)
② SUM 函数使用对 DECIMAL(17,0)的影响 出力 x 1
select sum(var1) from A_TEST
union all
select var2 from B_TEST
③ SUM函数使用对 DECIMAL(19,4)的影响 出力 .0000
select var1 from A_TEST
union all
select sum(var2) from B_TEST