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

解决方案 »

  1.   

    同意1楼的
    第二题用行列转换 你上网查查 decode
      

  2.   

    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)2,decode,sum
      

  3.   

    with tb as
    (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
      

  4.   

    一楼,我告诉你啊,我虽然是个菜鸟,但我知道我第一sql语句绝对不是太菜的,刚刚入门的人写不出来。3楼回答的我很满意,就是不知道他写的
    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都没有见过,谁能再帮我解释一下啊,谢谢。
    对了,鉴于我这种菜鸟,我看什么书好了,我日常的建库,建表,增,删改查,我都会了,但好多复杂的还不懂。
      

  5.   

    第一题:换个问法,有table1,和table2,数据都是一样的,找出两表中ID相同,name不一样的;
    问题就简单了;
    第二题:行列转换问题,这是关键;可简单的用他们给你的方法;复杂的就是具体有多少科目不知?
    查查资料就明白了!大半年没写SQL了,呵呵
      

  6.   

    对了,一楼说得其实挺好的,你自己先想,这个SQL你想怎么写,遇到了什么问题?不要等着别人喂,锻炼自己学习能力,语气过了点,但是抓住人家真实的意思就行了,恨铁不成钢而已
      

  7.   


    我只是一个菜鸟,并不是看不起你什么的
    只是你这样的提问方式,感觉像是自己不动脑子,到这求个一步到位的代码应付作业,我觉得这样不太好确实在学校学的基本都是SqlServer,和Oracle有着非常大的区别,图书馆借本书了解一些很必要的
      

  8.   

    其实这两个sql都不难,第二个实际中用到的比较多~~