Duvida SQL

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 ja Agradeço a atenção de todos voces

Bernard

qual o banco de dados?

alguns suportam comandos específicos pra este tipo de operação.

Não entendi a duvida!

parece que as duas tabelas são iguais!

explique com mais detalhes a consulta SQL!

use subconsulta/!

Vamos partir do pressuposto de que você está usando SQL ANSI e que usa o MySQL.
Vou ser cinsero, não tenho idéia de como fazer isso.
Você tem que montar uma query dinâmica. Mas para fazer isso você tem que saber os dados do banco.
Em Oracle tem um lance que se chama pivo.
Vou te mostrar um exemplo.

sql> select cargo, deptno, count(*) total
  from colaborador
  group by cargo, deptno
  /

CARGO         DEPTNO      TOTAL
---------- ---------- ----------
ANALISTA           20          5
GERENTE            10          1
GERENTE            20          1
GERENTE            30          1
PRESIDENTE         10          1
TÉCNICO            10          3
TÉCNICO            20          2
TÉCNICO            30          8


sql> select cargo
  , decode(deptno, 10, total, null) dept_10
  , decode(deptno, 20, total, null) dept_20
  , decode(deptno, 30, total, null) dept_30
  from ( select cargo, deptno, count(*) total
         from colaborador
         group by cargo, deptno )
   /

CARGO        DEPT_1O    DEPT_2O    DEPT_3O
---------- ---------- ---------- ----------
ANALISTA                       5
GERENTE             1
GERENTE                        1
GERENTE                                   1
PRESIDENTE          1
TÉCNICO             3
TÉCNICO                        2
TÉCNICO                                   8

Pelo que entendi é isso que você gostaria de fazer.
Perguntei a um amigo que meche com BD e ele me disse o seguinte.

Você faz uma consulta para ver todos os planos que existem em cima do resultado .Monta um sql dinamico
vai concatenando uma string instricoes sql
ai para cada plano você faz um case
que tds os bancos intendem
(Daniel)

Vai ser tenso em SQL essa bagaça hein.
Mas é possível.
Em Oracle é bem mais fácil, como pode observar.

Espero ter ajudado.
Abraço e boa sorte com o projeto.

Quando mais simples a forma que resolvemos um problema, menos tempo perdemos com a complexidade de alguns sistemas.

Sem recentimentos…

Covardia passar exemplos de oracle para quem tem duvidas nesse forum!. Com SBD Oracle você até faz programas orientado a objetos, mas o que vale aqui é a forma básica de resolver um problema e tentar iniciar em um nivel mais alto. Quando entendemos o basico, podemos subir um degrau para um nivel de conhecimento melhor o intermediario e depois passar para o avançado . Essa é a ideia de quem procura ajuda no forum. Não acredito que passando a resolução do problema estaremos ajudando os que precisam de ajuda.

falei sobre subconsulta, pois me parece uma coisa básica e facil de se usar em qualquer SGBD, principalmente usando SQL ANSI e exemplos por exemplo a internet está cheia

já que pediu estou enviando um exemplo abaixo:

SELECT * FROM Produtos WHERE PrecoUnidade ANY ( SELECT PrecoUnidade FROM DetalhePedido WHERE Desconto = 0 .25 )
claro que não é o que ele deseja, mas já da uma ideia.
acredito que a internet ajuda muito quando pesquisamos afundo o que precisamos.
Espero ter ajudado

O que é isso. Sem recentimentos.
Então, é que não foi postado o banco que está sendo utilizado.
Seria arrogância minha interpretar que estivesse usando SQL ANSI sabendo que existem SGBD que implementam estruturas próprias para facilitar o dia a dia do DBA.
O Oracle 10g é gratuito. Nada que impede que nosso amigo não o esteja utilizando.
Eu coloquei duas formas, e não resolvi seu problema, pelo contrário mostrei duas formas de se fazer.
E não acho covardia passar exemplos de Oracle.
Não quero levantar questionamentos neste tópico, mas a Oracle e o Java agora caminham mais próximos do que se imagina.
Portanto se nosso amigo estiver estudando Oracle está no caminho mais do que certo.
Ao menu ponto de vista, claro.

Mas de qualquer forma.
Está mais do que completa a resposta.
Uma sugestão em Oracle e duas em SQL ANSI.

Abraço.

[quote=edu_fernandes]O que é isso. Sem recentimentos.
Então, é que não foi postado o banco que está sendo utilizado.
Seria arrogância minha interpretar que estivesse usando SQL ANSI sabendo que existem SGBD que implementam estruturas próprias para facilitar o dia a dia do DBA.
O Oracle 10g é gratuito. Nada que impede que nosso amigo não o esteja utilizando.
Eu coloquei duas formas, e não resolvi seu problema, pelo contrário mostrei duas formas de se fazer.
E não acho covardia passar exemplos de Oracle.
Não quero levantar questionamentos neste tópico, mas a Oracle e o Java agora caminham mais próximos do que se imagina.
Portanto se nosso amigo estiver estudando Oracle está no caminho mais do que certo.
Ao menu ponto de vista, claro.

Mas de qualquer forma.
Está mais do que completa a resposta.
Uma sugestão em Oracle e duas em SQL ANSI.

Abraço.[/quote]

tudo bem amigo ! todos sabemos que oracle comprou a Sun e mais que ela já colocou o java junto com um aplicativo de desenvolvimento dela o frameword ADF, mas a questão aqui é outra. Desde o inicio do topico você iniciou uma campanha contra os participantes , respondi para o autor do topico para usar subconsulta e vc esnobou dizendo que falar para usar subconsultas é facil dificil é dar exemplos. Amigo eu respeito a opinião dos outros participantes , vejo as mensagens , mas nao procuro criticar e sim ajudar com uma informação , talvez minha informação nao ajude , mas se ajudar ficarei tranquilo. Agora eu já enviei varios exemplos nesse forum e já ate fiz um questao de alguns exemplos solicitados no forum , mas to sempre incentivando os participantes a procurarem a solução. Peço que desculpe-me por qualquer coisa, mas peço tambem que respeito a opiniao dos participantes
obrigado

Gente…

Obrigado a todos por me responderem

primeiramente o Banco que estou usando é o PostgreSQL

só que como eu n sou muito bom com banco de dados…fiquei meio perdido com tudo que vcs me falaram…
se puderem me esclarecer mais, agradeço.

vou tentar falar de novo.

minha tabela é a seguinte:
faixa_etaria | Plano | Valor do plano
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

e atravez de algum recurso do PostGreSQL ou pelo próprio SQL, queria que ela ficasse assim:

faixa_etaria | Valor Pl01 | Valor Pl02 | Valor Pl03
00 - 18 | 100,00 | 200,00 | 300,00
19 - 23 | 200,00 | 300,00 | 400,00

lembrando que essas dados são dinamicos e eu posso simplesmente cadastrar um novo plano (Pl04) ou uma nova faixa etária (24 - 28), assim minha tabela ficaria com mais colunas

agradeço a colaboração de todos

Problema resolvido.
Mas respeito a opinião de todos aqui. Desde o que se cadastrou hoje e não sabe nada do Java, até o moderador. Sem distinção.
Não quis lhe ofender.
De qualquer forma me perdoe a ofença.

Não quero discutir.

sem problemas!