//希望各位帮帮忙啊!衷心感谢
/**
 * 数据库为: Oracle10g
 * 现在有一张表名为student的表,数据如下:
 * ID NAME AGE
 * 1 A 20
 * 2 B 20
 * 3 C 20
 * 4 X 19
 * 5 Y 19
 */

/**
 * 期望结果(一)
 * 下面我想通过一条sql语句或者储存过程 查询AGE=20的相关记录
 * 查询结果需要如下:(只查询ID、NAME列就可以了)
 * ID NAME
 * 1,2,3        A,B,C
 */

/**
 * 期望结果(二)
 * 最好是能查询出这样的结果(根据AGE来查,我想的话应该会用Group By吧)
 * ID NAME
 * 1,2,3        A,B,C
 * 4,5 X,Y
 * 
 */

解决方案 »

  1.   

    select wm_concat(id) "ID",wm_concat(name) "name" from student
    group by age;
      

  2.   

    create table student
    (
           id number,
           name varchar2(20),
           age number
    );insert into student
    select 1 ,   'A'   ,    20 from dual
    union select        2 ,   'B',       20 from dual
    union select        3,    'C' ,       20 from dual 
    union select        4,    'X',       19 from dual
    union select        5,    'Y' ,      19 from dual;1,期望结果(一)
    select wm_concat(id) as ID ,wm_concat(name) as NAME from student 
    group by age having age=20;
    --结果如下:
      ID      NAME
    1,2,3   A,C,B
    2,期望结果(二)
    select wm_concat(id) as ID ,wm_concat(name) as NAME from student 
    group by age order by age desc;
    --结果如下:
      ID      NAME
      1,2,3   A,C,B
      4,5     X,Y  
      

  3.   

    1.
    select wm_concat(id)id,wm_concat(name)name
      from student where age=20
    2.
    select wm_concat(id)id,wm_concat(name)name
      from student 
    group by age