1、数据库中的数据格式如下:
id name 1 zhang
1 zhang
2 wang
2 li
3 li
4 zhao要用oracle查询出相同id对应的不同内容,请写出一个sql语句,查询出结果如下:
id name
2 wang
2 li2、将树状的数据查询成横状的,如学生成绩表;如下:
id name subject grand
1 张 语文 100
2 张 数学 80
3 张 外语 90
4 王 语文 40
5 王 数学 90
6 赵 语文 89
7 李 地理 90
.......................
查询成如下结果:
id name 语文 数学 外语 地理
1 张 100 80 90 null
id name 1 zhang
1 zhang
2 wang
2 li
3 li
4 zhao要用oracle查询出相同id对应的不同内容,请写出一个sql语句,查询出结果如下:
id name
2 wang
2 li2、将树状的数据查询成横状的,如学生成绩表;如下:
id name subject grand
1 张 语文 100
2 张 数学 80
3 张 外语 90
4 王 语文 40
5 王 数学 90
6 赵 语文 89
7 李 地理 90
.......................
查询成如下结果:
id name 语文 数学 外语 地理
1 张 100 80 90 null
第二题用行列转换 你上网查查 decode
select id from (
select id,name,row_number() over(partition by id,name order by name) rn from temp
) group by id,rn having count(rn) = 2)2,decode,sum
(select 1 id,'zhang' name from dual union all
select 1,'zhang' from dual union all
select 2,'wang' from dual union all
select 2,'li' from dual union all
select 3,'li' from dual union all
select 4,'zhao' from dual)
select id,name
from tb a where exists(select 1 from tb b where a.id=b.id and a.name<>b.name
)
select name,sum(decode(subject,'语文',grant)) "语文",
sum(decode(subject,'数学',grant)) "数学",
sum(decode(subject,'外语',grant)) "外语",
sum(decode(subject,'地理',grant)) "地理"
from tb
group by name
select * from temp where id in(
select id from (
select id,name,row_number() over(partition by id,name order by name) rn from temp
) group by id,rn having count(rn) = 2)
这是什么意思,好多里面的row_number(),partition都没有见过,谁能再帮我解释一下啊,谢谢。
对了,鉴于我这种菜鸟,我看什么书好了,我日常的建库,建表,增,删改查,我都会了,但好多复杂的还不懂。
问题就简单了;
第二题:行列转换问题,这是关键;可简单的用他们给你的方法;复杂的就是具体有多少科目不知?
查查资料就明白了!大半年没写SQL了,呵呵
我只是一个菜鸟,并不是看不起你什么的
只是你这样的提问方式,感觉像是自己不动脑子,到这求个一步到位的代码应付作业,我觉得这样不太好确实在学校学的基本都是SqlServer,和Oracle有着非常大的区别,图书馆借本书了解一些很必要的