create table tb(name varchar2(10),subject varchar2(10),score number(10));
insert into tb values('张三','语文',88);
insert into tb values('张三','数学',87);
insert into tb values('张三','英语',86);
insert into tb values('李四','语文',66);
insert into tb values('李四','数学',67);
insert into tb values('李四','英语',68);
select * from tb;
--原表查询
select name as 姓名,max(case when subject='语文' then score else 0 end) as 语文 ,
max(case when subject='数学' then score else 0 end) as 数学 ,
max(case when subject='英语' then score else 0 end) as 英语
from tb
group by name
在各种数据库中,判断字段为空的方法
一:informix
select (case name when null then '2' else name end ) as name from ce_shi where id in (1,2,3)
二:oracle
select (case when name is null then '2' else name end ) as name from ce_shi where id in (1,2,3)
注意:oracle中null和空有区别
或者:select nvl(name,'2') from ce_shi
三:mysql
select (case when name is null then '2' else name end ) as name from ce_shi where id in (1,2,3)
本文介绍了如何使用SQL创建一个包含学生姓名、科目和分数的成绩表,并演示了如何通过CASE语句进行特定科目的最大值查询。此外,还对比了Informix、Oracle和MySQL三种数据库系统中处理NULL值的不同方法。

476

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



