DUVIDA, Consulta SQL, linhas para colunas com agrupador

01/02/2018

0

Olá galera, boa tarde !

Venho até vocês para pedir ajuda para solucionar meu problema que já perdura a alguns dias e não consigo solução,

Seguinte:

Tenho uma tabela base e nesta são especificados os valores e utilização por tipo de serviço, referenciados em uma coluna, sendo eles:

Internet Móvel, Ligações Locais e Ligações de Longa Distância.

Queria agrupar por linha e dividir a utilização por colunas conforme exemplo:

Base:

CF_CELULAR DF_SECAO DF_DURACAO DF_UNIDADE
138799371407 Internet Móvel 1,2 MINUTOS
138799371407 Internet Móvel 2,4 MINUTOS
138799371407 Internet Móvel 3,7 MINUTOS
138799371407 Ligações Locais 8,7 MINUTOS
138799371407 Ligações de Longa Distância 61 KB
138799371407 Ligações de Longa Distância 495 KB
138799371407 Ligações Locais 6 KB
138799371407 Internet Móvel 1064,96 KB
138799371407 Ligações Locais 46 KB
138799371407 Ligações de Longa Distância 3655,68 KB
707863530715 Ligações de Longa Distância 750 KB
707863530715 Ligações Locais 26624 KB
707863530715 Internet Móvel 4403,2 KB
707863530715 Internet Móvel 234 KB
707863530715 Internet Móvel 122 KB
707863530715 Internet Móvel 22845,44 KB
707863530715 Internet Móvel 701 KB
707863530715 Internet Móvel 423 KB
269004344879 Internet Móvel 436 KB
269004344879 Internet Móvel 731 KB
269004344879 Internet Móvel 510 KB
269004344879 Internet Móvel 49 KB
269004344879 Internet Móvel 212 KB
269004344879 Internet Móvel 227 KB
269004344879 Internet Móvel 507 KB
269004344879 Internet Móvel 454 KB
269004344879 Internet Móvel 334 KB
269004344879 Internet Móvel 300 KB
269004344879 Internet Móvel 1021 KB
269004344879 Ligações de Longa Distância 601 KB
269004344879 Ligações de Longa Distância 29 KB
269004344879 Internet Móvel 43 KB
269004344879 Internet Móvel 12 KB
269004344879 Internet Móvel 159 KB
269004344879 Internet Móvel 487 KB
61981127009 Ligações de Longa Distância 203 KB
61981127009 Ligações de Longa Distância 229 KB
61981127009 Ligações de Longa Distância 689 KB
61981127009 Ligações de Longa Distância 3686,4 KB
61981127009 Ligações de Longa Distância 13 KB
61981127009 Ligações de Longa Distância 29624,32 KB
61981127009 Ligações de Longa Distância 2048 KB
61981127009 Ligações de Longa Distância 236 KB
61981127009 Ligações de Longa Distância 394 KB
61981127009 Ligações de Longa Distância 1239,04 KB
61981127009 Ligações de Longa Distância 516 KB
61981127009 Ligações de Longa Distância 3860,48 KB
61981127009 Ligações de Longa Distância 59 KB
61981127009 Ligações de Longa Distância 797 KB
61981127009 Ligações de Longa Distância 874 KB
61981127009 Ligações de Longa Distância 159 KB
61981127009 Ligações de Longa Distância 60 KB
61981127009 Ligações de Longa Distância 609 KB
61981127009 Ligações de Longa Distância 7505,92 KB
61981127009 Ligações de Longa Distância 500828,2 KB
61981127009 Internet Móvel 29 KB
61981127009 Internet Móvel 17827,84 KB
61981127009 Internet Móvel 86 KB
61981127009 Internet Móvel 444 KB
61981127009 Internet Móvel 1126,4 KB
61981127009 Internet Móvel 1198,08 KB
61981127009 Internet Móvel 321 KB
61981127009 Ligações de Longa Distância 2437,12 KB
61981127009 Ligações de Longa Distância 599 KB
61981127009 Ligações de Longa Distância 707 KB
61981127009 Ligações de Longa Distância 242 KB
61981127009 Ligações de Longa Distância 665 KB
61981127009 Ligações de Longa Distância 15 KB
61981127009 Ligações Locais 8 KB
61981127009 Ligações Locais 1 KB
61981127009 Ligações Locais 1 KB
61981127009 Ligações Locais 2 KB
61981127009 Ligações Locais 1 KB


Resultado:
CF_CELULAR Ligações Locais Internet Móvel Ligações de Longa Distância
138799371407 60,7 1072,26 4211,68
707863530715 26624 28728,64 750
269004344879 0 5482 630
61981127009 13 21032,32 558295,48

Não consegui estruturar isso em SQL, pensei em subconsultas porém realmente não sei como faze-la e peço ajuda.

Obrigado.
Guilherme Gomes

Guilherme Gomes

Responder

Post mais votado

01/02/2018

Só corrigindo meu assassinato da lingua portuguesa

Uma solução que funcionaria para qualquer banco de dados , seria assim, usando o CASE

Rs.

Abs

Luiz Santos

Luiz Santos
Responder

Mais Posts

01/02/2018

Emerson Nascimento

Veja se o conteúdo do link abaixo te ajuda....

http://www.vertabelo.com/blog/technical-articles/creating-pivot-tables-in-postgresql-using-the-crosstab-function

Responder

01/02/2018

Luiz Santos

Guilherme, qual banco de dados você está usando?

Uma solução que funcionaria para qulquer todos , seria assim, usando o CASE

SELECT 
	CF_CELULAR,
	SUM(CASE WHEN DF_SECAO = 'Ligações Locais'             THEN DF_DURACAO ELSE 0 END) AS LIGACOES_LOCAIS
	SUM(CASE WHEN DF_SECAO = 'Internet Móvel'              THEN DF_DURACAO ELSE 0 END) AS INTERNET_MOVEL
	SUM(CASE WHEN DF_SECAO = 'Ligações de Longa Distância' THEN DF_DURACAO ELSE 0 END) AS LIGACOES_LONGA_DISTANCIA
FROM
	TABELA
GROUP BY 
	CF_CELULAR
	


Espero ter ajudado.

Grande abraço
Responder

01/02/2018

Guilherme Gomes

Luiz fernando, funcionou perfeitamente, muito obrigado !

Aproveitando ainda o tópico, caso eu deseja-se escolher outras clausulas em outras colunas condicionando-as a essas que especifiquei, ainda teria como ? ex: naquela coluna eu pedi Internet Movel, e queria condicionalo a outra coluna com Internet Movel Outros Estados ?

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar