oracle中判断某个字段是否存在
document为表名
docid为字段名
select count(column_name)
from cols
where table_name = upper('document')
and column_name = upper('docid')
如果查询出来的为0说明document中不存在docid字段
含义 :假如'bzpt_sf_orders' 没有'id6' 这个字段,就返回 ddd,
假如 有这个字段 就返回 查询出来的字段。
select decode( (select count(column_name)
from cols
where table_name = upper('bzpt_sf_orders')
and column_name = upper('id6')) ,'1',(select o.id
from bzpt_sf_orders o where o.id='4028820f2a847fed012a84838c910003'), '0', 'ddd' )
from dual
name subject grade
---------------------------
student1 语文 80
student1 数学 70
student1 英语 60
student2 语文 90
student2 数学 80
student2 英语 100
……
转换为
语文 数学 英语
student1 80 70 60
student2 90 80 100
按照name分组得到的结果,所以decode外面要套个sum,不然group by出现语义错误,结果为
select name,sum(decode(subject,'语文', grade,null)) "语文",
sum(decode(subject,'数学', grade,null)) "数学",
sum(decode(subject,'英语', grade,null)) "英语"
from student
group by name