这个CASE语句怎么写。
info 表中有a字段,其类型为VARCHAR2(),值为20.5,30.1等数据,业务逻辑要求合计该字段,同时要求150封顶,SQL如何写?
select case when sum(a) > 150 then '150 ' else sum(a) end as A from info
以上语句在else sum(a)处报“数据类型不一致”错误!
------解决方案--------------------select case when sum(a) > 150 then 150 else sum(a) end as A from info
------解决方案-------------------- '150 ' 与 else sum(a) 的结果类型不一致导致的错误
------解决方案--------------------问题在于sum函数中不能使用varchar2类型的字段
select case when sum(to_number( '20 ')) > 19 then 'yes ' else 'no ' end ship_no from dual;
你的:
select case when sum(to_number(a)) ) > 150 then '150 ' else sum(to_number(a)) )end as A from info
------解决方案--------------------如果前面就写成 '150封顶 ',那么后面的else sum(a)如何改?
select case when sum(a) > 150 then '150封顶 ' else to_char(sum(a)) end as A from info