今天周末,比昨天
多睡了一个多小时。
步入正题:
selectcase when x.fnl_price is null then a.RTL_MKT_VAL * 0.35 else a.RTL_MKT_VAL * x.fnl_price end as AGENT_COSTfrom ck a left join bala x on a.id =x.id----注:此处的 x.fnl_price 是decimal 类型 此处的a.RTL_MKT_VAL也是decimal 类型---
类型:
别在意那个字段的大小写哈! 我只是简化了。
需求:就是我如果x.fnl_price 为空的话,那么我就将a.RTL_MKT_VAL * 0.35 ,如果不为空,那么就进行相乘!
我们进行运行计算
运行之后出现报错:
Code: 43, e.displayText() = DB::Exception: Illegal types Decimal(20, 4) and Float64 of arguments of function multiply
我们都应该知道本身两表进行相乘计算,字段类型都一样,那出错的肯定是在这个 '0.35' 咯! 0.35是float类型,具体就不给你们普及了。
那如果不能进行相乘,我的需求没办法做啊。
来来来 cast() ! 这个还是要普及一下!
CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。
语法:CAST (expression AS data_type)
expression:任何有效的SQServer表达式。
AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。
data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。
可以转换的类型是有限制的。这个类型可以是以下值其中的一个:
例子:
1.SELECT CAST('9.0' AS decimal) 结果:9
2.SELECT CAST('9.5' AS decimal(10,2)) 结果:9.50(精度与小数位数分别为10与2。精度是总的数字位数,包括小数点左边和右边位数的总和。而小数位数是小数点右边的位数)
3.SELECT CAST(NOW() AS DATE) 结果:2017-11-27
now() 2017-11-27 10:43:22
那我们就换成这种
selectcase when x.FNL_PRICE is null then a.RTL_MKT_VAL * CAST('0.35' as Decimal(20,4)) else a.RTL_MKT_VAL * x.FNL_PRICE end as AGENT_COSTfrom ck a left join bala x on a.id =b.id
进行运算
哦了! 还有不懂得,我的大手掌应该也够不着你。哈哈哈哈
这毕竟都是开荒,开荒的路上我希望人员越来越多。
哦! 对了 还有一个left join 的问题! 你们可以试试多表关联进行 left join 是有问题的! 这个left join 问题看下午有没有时间去写。 不过我应该会写出来,毕竟开荒挺难的 一个坑一个坑的踩!
撒花~
来源:https://www.icode9.com/content-4-776401.html联系客服