Fórum DUVIDA SELECT - Count em 1 campo mostrando em varias colunas #491625
10/09/2014
0
Tenho uma tabela GUIA, onde possuo vários campos mais vamos tratar dos 3 mais importantes: DATA, MEDICO e ORIGEM_EMISSAO. Esse campo ORIGEM_EMISSAO possui valores de 1 a 9 referente ao local que a guia foi emitida(PS. Esse campo não é FK de nenhuma tabela, não tem vinculo). Preciso fazer um indicador onde mostre quantas guias foram emitidas na WEB, PORTAL, OPERADORA...etc para um determinado medico durante um período. Consegui fazer esse indicador porem esta saindo em linhas, gostaria que saísse em colunas. Ex:
Periodo Medico qntguias
09/2014 JOSE 3 - web
09/2014 JOSE 4 - portal
09/2014 JOSE 1 - operadora
eu queria que fosse assim
Periodo Medico web portal operadora
09/2014 Jose 3 4 1
Não sei se deu pra entender..Mais é possível?
Obrigado a todos
Camilo Oliveira
Curtir tópico
+ 0Posts
10/09/2014
Joel Rodrigues
Gostei + 0
10/09/2014
Camilo Oliveira
Teria como eu inserir na tabela temporaria o valor de origem para cada coluna da origem? Como?
Gostei + 0
10/09/2014
Alisson Santos
Não sei se precisaria de uma tabela temporária.
Se precisar pode me enviar no e-mail alisson@uniontecnologia.com.br que analiso e te mando a resposta pelo o fórum mesmo.
Gostei + 0
17/09/2014
Lourival Queiroz
create table Guia_Med (
Data date,
Nome varchar2(20),
Tipo varchar2(10),
qtde number(6))
/
insert into guia_med values ('01/09/2014','JOSE','WEB',3);
insert into guia_med values ('01/09/2014','JOSE','PORTAL',4);
insert into guia_med values ('01/09/2014','JOSE','OPERADORA',1);
insert into guia_med values ('02/09/2014','JOSE','WEB',1);
insert into guia_med values ('02/09/2014','JOSE','PORTAL',6);
insert into guia_med values ('02/09/2014','JOSE','OPERADORA',9);
commit;
SELECT *
from (
SELECT Data,
Nome,
Tipo,
sum(qtde) qtd
FROM guia_med
where to_char(Data,'yyyy') = '2014'
GROUP BY Data, Nome, Tipo, to_char(Data,'mm')
)
PIVOT (SUM(QTD) AS QTD
FOR (Tipo) IN ('WEB' AS Web, 'PORTAL' AS Portal, 'OPERADORA' AS Operadora))
order by Data,Nome
Gostei + 0
17/09/2014
Adriano Gomes
select Periodo
, Medico
, sum(WEB) as 'WEB'
, sum(PORTAL) as 'PORTAL'
, sum(OPERADORA) as 'OPERADORA'
from
(
select distinct Periodo
, Medico
, case Guias when 'WEB' then count(Guias) else 0 end as 'WEB'
, case Guias when 'PORTAL' then count(Guias) else 0 end as 'PORTAL'
, case Guias when 'OPERADORA' then count(Guias) else 0 end as 'OPERADORA'
from #Guia_Med
group by Periodo, Medico, Guias
) as Res
group by Periodo, Medico
fiz no T-SQL mas provavelmente é a mesma coisa no Oracle
um OFFTOPIC aqui: Lourival Queiroz como faço para quebrar a linha quando envio um código como você fez ai linha 1, 2, 3, 4... etc
aqui sai tudo na mesma linha então sempre mando como texto normal
Gostei + 0
17/09/2014
Camilo Oliveira
Vou postar abaixo para que vocês vejam...utilizei count(decode..
select decode(GROUPING(nome),1,'Total',nome) AS nome, t.desc_tipo,
count(DECODE (origem_emis, 1, cod_guia, NULL)) DESK,
count(DECODE (origem_emis, 8, cod_guia, NULL)) web,
count(DECODE (origem_emis, 9, cod_guia, NULL)) SAP
from guia g,
medico m,
tab_tipo_guia t
where g.cod_med_sdo = m.cod_medico
and g.dthr_emissao >= to_date('01/09/2014', 'dd/mm/yyyy')
and g.tipo_guia = t.tipo_guia
group by rollup(m.nome),t.desc_tipo
Valeu galera..
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)