多个group by实例

一、 多个group by用法

 

select allchange.hotelId,allchange.chn_name ,allchange.isactive,allchange.createtime, max(allchange.operDate) modifytime   from 

 

 

                            (

                                    select t.hotelId hotelId, h.chn_name,h.isactive,h.createtime,t.operdate operDate

                                             from htl_info.t_hotel_log t,htl_info.t_hotel h  

                                             where  t.hotelid=h.hotelid and   t.operdate >= to_date('2015/05/10 00:00:00 ','yyyy/mm/dd hh24:mi:ss')  and t.operdate<=to_date('2015/05/22 00:00:00 ','yyyy/mm/dd hh24:mi:ss')               

                                      union  

                                                                      

                                    select r.hotelId hotelId, h.chn_name,h.isactive,h.createtime, r.operdate operDate

                                             from htl_info.t_roomtype_log r, htl_info.t_hotel h  

                                             where  r.hotelid=h.hotelid and   r.operdate >= to_date('2015/05/10 00:00:00 ','yyyy/mm/dd hh24:mi:ss')  and r.operdate<=to_date('2015/05/22 00:00:00 ','yyyy/mm/dd hh24:mi:ss')

                                                    

                            )  allchange  group by allchange.hotelId  ,allchange.chn_name,allchange.isactive,allchange.createtime

 

 

二、case  加上group by 用法

               

 

  select tt.hotelid,tt.chn_name,case when tt.isactive='0' then '删除' when tt.createtime=tt.operdate then '新建'  else '修改'  end as changetype  from 

                         (    select allchange.hotelId,allchange.chn_name ,allchange.isactive isactive,allchange.createtime createtime, max(allchange.operDate) operdate  from 

                                                           

                            (

                                    select t.hotelId hotelId, h.chn_name,h.isactive,h.createtime,t.operdate operDate

                                             from htl_info.t_hotel_log t,htl_info.t_hotel h  

                                             where  t.hotelid=h.hotelid and   t.operdate >= to_date('2015/05/10 00:00:00 ','yyyy/mm/dd hh24:mi:ss')  and t.operdate<=to_date('2015/05/22 00:00:00 ','yyyy/mm/dd hh24:mi:ss')               

                                      union  

                                                                      

                                    select r.hotelId hotelId, h.chn_name,h.isactive,h.createtime, r.operdate operDate

                                             from htl_info.t_roomtype_log r, htl_info.t_hotel h  

                                             where  r.hotelid=h.hotelid and   r.operdate >= to_date('2015/05/10 00:00:00 ','yyyy/mm/dd hh24:mi:ss')  and r.operdate<=to_date('2015/05/22 00:00:00 ','yyyy/mm/dd hh24:mi:ss')

                                                    

                            )  allchange  group by allchange.hotelId  ,allchange.chn_name,allchange.isactive,allchange.createtime

                                 

                          ) tt                 

猜你喜欢

转载自fxzcollege6.iteye.com/blog/2213685
今日推荐