日期:2014-05-17  浏览次数:20880 次

这个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