在列转行的sql 中,运行出现ora-01722 错误,例如:
select id,
sum(decode(col_name,'Name',col_val,null)) as name,
sum(decode(col_name,'Age',col_val,null)) as age,
from student
group by id;
发现问题出在 sum(decode(col_name,'Name',col_val,null))这句。
原因:当值中出现字母等字符无法运算时就会报 以上错误。
解决方法:max(decode(col_name,'Name',col_val,null)) 如此的结果也可以满足我的需要。
本文介绍了一种在使用SQL进行列转行操作时遇到ORA-01722错误的原因及解决方法。当尝试使用SUM(DECODE)进行转换时,如果字段包含非数值类型的数据,则会触发该错误。解决方案是改用MAX(DECODE)。
6005

被折叠的 条评论
为什么被折叠?



