Bernard Luz Postado Novembro 22, 2010 Denunciar Share Postado Novembro 22, 2010 Galera, boa noiteestou com uma duvida no SQL e queria saber se seria possivel resolvertenho a seguinte tabela: faixa_etaria | Plano | Valor 00 - 18 | Pl01 | 100,00 00 - 18 | Pl02 | 200,00 00 - 18 | Pl03 | 300,00 19 - 23 | Pl01 | 200,00 19 - 23 | Pl02 | 300,00 19 - 23 | Pl03 | 400,00queria que, se possivel, atravez do SQL ela ficasse assim: faixa_etaria | Pl01 | Pl02 | Pl03 00 - 18 | 100,00 | 200,00 | 300,00 19 - 23 | 200,00 | 300,00 | 400,00Desde já Agradeço a atenção de todos vocesBernard Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Novembro 23, 2010 Denunciar Share Postado Novembro 23, 2010 Oi, BernardDividi sua solução em etapas para que fique bem didático:Etapa 1. Criação e carga da tabela de teste insert into bernard(faixa_etaria, Plano, Valor) values ('00 - 18','Pl01',100.00), ('00 - 18','Pl02',200.00), ('00 - 18','Pl03',300.00), ('19 - 23','Pl01',200.00), ('19 - 23','Pl02',300.00), ('19 - 23','Pl03',400.00); Etapa 2. SoluçãoSELECT faixa_etaria, SUM(IF(Plano='Pl01',Valor,0)) AS Pl01, SUM(IF(Plano='Pl02',Valor,0)) AS Pl02, SUM(IF(Plano='Pl03',Valor,0)) AS Pl03 FROM bernard GROUP BY faixa_etaria;Esta solução é chamada de pivot table. Ela apresenta problemas se a quantidade de planos for grande. Neste caso, uma solução melhor seria com o uso de uma storage procedure. Eu já publiquei uma aqui no forum e não faz muito tempo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Bernard Luz
Galera, boa noite
estou com uma duvida no SQL e queria saber se seria possivel resolver
tenho a seguinte tabela:
faixa_etaria | Plano | Valor
00 - 18 | Pl01 | 100,00
00 - 18 | Pl02 | 200,00
00 - 18 | Pl03 | 300,00
19 - 23 | Pl01 | 200,00
19 - 23 | Pl02 | 300,00
19 - 23 | Pl03 | 400,00
queria que, se possivel, atravez do SQL ela ficasse assim:
faixa_etaria | Pl01 | Pl02 | Pl03
00 - 18 | 100,00 | 200,00 | 300,00
19 - 23 | 200,00 | 300,00 | 400,00
Desde já Agradeço a atenção de todos voces
Bernard
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.