format("-0.002222", 2) 和 format(-0.002222, 2)
其实是不一样的
第一个结果是-0.00
第二个是0.00
为什么呢?
一位第一个是字符串截取,但是第二个才是数字。
事情的缘由是:
给与表b的score2是一个默认值,因为表b没有这个字段
select Format(c.score1 -c.score2, 2) (
SELECT socre1,score2 from table_a
union
select score1,0 as score2 from table_b
)c
原本会认为是没有问题,但其实这样的话,因为表中的score都定义是:decimal(8,5),
所以这边Format(c.score1 -c.score2, 2) 会保留正负符号,在比如结果是 -0.002222就会出现-0.00这样的结果
解决方案:
FORMAT(CAST(avg_score AS decimal(8,5)) - CAST(avg_score AS decimal(8,5)))
这样就可以了~