Group By

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Pessoal preciso agrupar esse group by desse select em outro por status e a quantidade de dias,horas que é feito no select interno

Code

Selecionar tudo

SELECT h.id_chamado,t.dsc_nome,s.dsc_status,sum(trunc(h.dat_fechamento - h.dat_abertura))
                             || ' DIAS ' || 
                             floor(((h.dat_fechamento-h.dat_abertura)*24*60*60)/3600)
                             || ' HORAS ' ||
                             floor((((h.dat_fechamento-h.dat_abertura)*24*60*60) -
                             floor(((h.dat_fechamento-h.dat_abertura)*24*60*60)/3600)*3600)/60)
                             || ' MINUTOS ' ||
                             round((((h.dat_fechamento-h.dat_abertura)*24*60*60) -
                             floor(((h.dat_fechamento-h.dat_abertura)*24*60*60)/3600)*3600 -
                             (floor((((h.dat_fechamento-h.dat_abertura)*24*60*60) -
                             floor(((h.dat_fechamento-h.dat_abertura)*24*60*60)/3600)*3600)/60)*60) ))
                             || ' SEGUNDOS ' tempo_atividade
                             FROM sgc.hchamados h,tecnicos t,status s
                             where h.cod_tecnico = t.cod_tecnico
                             and h.cod_status = s.cod_status
                             --and h.id_chamado = 42
                             group by grouping sets(h.id_chamado),s.dsc_status,t.dsc_nome,h.dat_fechamento,h.dat_abertura;
rraranha
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Qui, 04 Mar 2010 8:46 am
Localização: Catanduva - SP
Reinaldo Roberto Aranha
reinaldo@cerradinho.com.br

Tente assim:

Selecionar tudo

SELECT TAB.STATUS, SUM(TAB.TEMPO_ATIVIDADE) TEMPO_ATIVIDADE
FROM (SELECT h.id_chamado,t.dsc_nome,s.dsc_status,sum(trunc(h.dat_fechamento - h.dat_abertura)) 
                             || ' DIAS ' || 
                             floor(((h.dat_fechamento-h.dat_abertura)*24*60*60)/3600) 
                             || ' HORAS ' || 
                             floor((((h.dat_fechamento-h.dat_abertura)*24*60*60) - 
                             floor(((h.dat_fechamento-h.dat_abertura)*24*60*60)/3600)*3600)/60) 
                             || ' MINUTOS ' || 
                             round((((h.dat_fechamento-h.dat_abertura)*24*60*60) - 
                             floor(((h.dat_fechamento-h.dat_abertura)*24*60*60)/3600)*3600 - 
                             (floor((((h.dat_fechamento-h.dat_abertura)*24*60*60) - 
                             floor(((h.dat_fechamento-h.dat_abertura)*24*60*60)/3600)*3600)/60)*60) )) 
                             || ' SEGUNDOS ' tempo_atividade 
                             FROM sgc.hchamados h,tecnicos t,status s 
                             where h.cod_tecnico = t.cod_tecnico 
                             and h.cod_status = s.cod_status 
                             --and h.id_chamado = 42 
                             group by grouping sets(h.id_chamado),s.dsc_status,t.dsc_nome,h.dat_fechamento,h.dat_abertura) TAB
GROUP BY TAB.STATUS                             
;
Responder
  • Informação