你想想
group by 是个组函数比如
select a,b from table group by b;
这句语句,b值为1的列有很多,a又各不相同,那么a应该显示什么呢
所以使用了group by那么,select 后面要么跟group by 的字段或者跟组函数

解决方案 »

  1.   

    Group By必须加上所有的列(除聚合函数等计算列)
      

  2.   

    create or replace function get_title(p_id in varchar2)
    return varchar2
    as
    str varchar2(100);
    cursor t_sor(v_id varchar2) is 
    select traintitle from train where trainid=v_id;
    num number:=0;
    begin
    for v_sor in t_sor loop
    if num=0 then
    str:=v_sor.traintitle;
    num:=num+1;
    else
    str:=str||','||v_sor.traintitle;
    end if;
    end loop;
    return str;
    end;
    /
    select sum(trainstatics.period * 24 * 60) as total_time,
           trainid,get_title(trainid) as traintitle
      from trainstatics
     where usergroupid = 1
     group by trainstatics.trainid
      

  3.   

    sorry,笔语,修改如下:
    ...
    for v_sor in t_sor(p_id) loop
    ..
      

  4.   

    select * from 
    (select sum(trainstatics.period * 24 * 60) as total_time,trainid, from trainstatics
     where usergroupid = 1
     group by trainstatics.trainid) a,
    (select traintitle,trainid 
              from train) b 
    where a.trainid=b.trainid
      

  5.   

    select sum (a.period * 24 * 60) total_time, a.trainid, b.traintitle
      from trainstatics a, train b
     where a.trainid = b.trainid AND usergroupid = 1
     group by a.trainid, b.traintitle;这样的写法不是挺规范的吗?
    在select列中尽量不要用select语句作为某个列,否则很讨厌,pl/sql 8.17都不支持。