日期:2014-05-18  浏览次数:20729 次

sql server numeric 的问题,很疑惑,解决100分奉送
有三个字段
tukacd     nvarchar(2)
jissekisu     numeric(19,4)
uritanka   money
现在我执行以下操作:
select   case   when   tukacd   =   '2 '   then   floor(jissekisu*uritanka)   else   round((jissekisu*uritanka),2)     end   from   t_syukka

查询结果全都是整数,无论tukacd   是否等于2
我执行
select   round((jissekisu*uritanka),2)     from   t_syukka
没问题,保留2位小数,困惑中...


------解决方案--------------------
这样:
select case when tukacd = '2 ' then floor(jissekisu*uritanka)*1.00 else round((jissekisu*uritanka),2) end from t_syukka


如果查询第一行为INT,那后面所有行都为INT


floor(jissekisu*uritanka)*1.00 --为了避免这种情况 *1.00是必要的
------解决方案--------------------
同样迷惑
把jissekisu*uritanka中的uritanka转换成小数类型再相乘试试
------解决方案--------------------
not first line,but all line
floor function return a int and a column with one datatype