日期:2014-05-18  浏览次数:20419 次

有关SQL语句中GROUP BY的问题
select a.acc_nbr,a.serv_id,sum(i.charge/100),
(select m.TYPE_NAME from 表m where m.type_code = a.std_tml_id and m.merge_group_id = 6)县名
from 表a,表 i
where i.serv_id=a.serv_id
group by 

请高手指点一下这个GROUP BY后面得怎么写
不要告诉我把表m拿到from 后面哦,我就想知道包含子查询语句的字段在GROUP BY里该怎么写

------解决方案--------------------
SQL code
select a.acc_nbr,a.serv_id,sum(i.charge/100),
(select m.TYPE_NAME from 表m where m.type_code = a.std_tml_id and m.merge_group_id = 6)县名
from 表a,表 i
where i.serv_id=a.serv_id
group by a.acc_nbr,a.serv_id

------解决方案--------------------
SQL code
select a.acc_nbr,a.serv_id,sum(i.charge/100),
(select m.TYPE_NAME from 表m where m.type_code = a.std_tml_id and m.merge_group_id = 6)县名
from 表a,表 i
where i.serv_id=a.serv_id 
group by a.acc_nbr,a.serv_id --这样就行吧

------解决方案--------------------
SQL code
--试试
select  a.acc_nbr ,
        a.serv_id ,
        sum(i.charge / 100) ,
        max(( select    m.type_name
              from      表m
              where     m.type_code = a.std_tml_id
                        and m.merge_group_id = 6
            )) 县名
from    表a ,
        表 i
where   i.serv_id = a.serv_id
group by a.acc_nbr ,
        a.serv_id

------解决方案--------------------
SQL code

select a.acc_nbr,a.serv_id,sum(i.charge/100),m.TYPE_NAME
from 表a a join 表i i on i.serv_id=a.serv_id
      left join 表m m on m.type_code = a.std_tml_id and m.merge_group_id = 6
group by a.acc_nbr,a.serv_id,m.TYPE_NAME

------解决方案--------------------
select a.acc_nbr,a.serv_id,sum(i.charge/100),m.TYPE_NAME
from 表a a join 表i i on i.serv_id=a.serv_id
left join 表m m on m.type_code = a.std_tml_id and m.merge_group_id = 6
group by a.acc_nbr,a.serv_id,m.TYPE_NAME


这个比较合理
------解决方案--------------------
把子查询用关联来做 就好点 而且数据量大速度也会快点