Como montar uma SQL com dados colunados em Linha
Uso D7 + DBExpress+FireBird 1.5.3
Tenho uma tabela com seguintes dados
JOSE MANOEL 550,00
JOSE MANOEL 600,00
JOSE MANOEL 800,00
PEDRO JOAQUIM 100,00
PEDRO JOAQUIM 400,00
MARIA SILVA 180,00
JOANA SANTOS 150,00
HELIO NASCIMENTO 250,00
HELIO NASCIMENTO 180,00
HELIO NASCIMENTO 100,00
HELIO NASCIMENTO 200,00
HELIO NASCIMENTO 300,00
Preciso de SQL que me retorne os Dados em Linha ou seja
CAMPO1 CAMPO2 CAMPO3 CAMPO4 CAMPO5 CAMPO6
JOSE MANOEL 550,00 600,00 800,00
PEDRO JOAQUIM 100,00 400,00
MARIA SILVA 180,00
JOANA SANTOS 150,00
HELIO NASCIMENTO 250,00 180,00 100,00 200,00 300,00
Não sei como montar esta SQL. Será que alguem pode me ajudar?
Saudações/Hélio Nascimento
Tenho uma tabela com seguintes dados
JOSE MANOEL 550,00
JOSE MANOEL 600,00
JOSE MANOEL 800,00
PEDRO JOAQUIM 100,00
PEDRO JOAQUIM 400,00
MARIA SILVA 180,00
JOANA SANTOS 150,00
HELIO NASCIMENTO 250,00
HELIO NASCIMENTO 180,00
HELIO NASCIMENTO 100,00
HELIO NASCIMENTO 200,00
HELIO NASCIMENTO 300,00
Preciso de SQL que me retorne os Dados em Linha ou seja
CAMPO1 CAMPO2 CAMPO3 CAMPO4 CAMPO5 CAMPO6
JOSE MANOEL 550,00 600,00 800,00
PEDRO JOAQUIM 100,00 400,00
MARIA SILVA 180,00
JOANA SANTOS 150,00
HELIO NASCIMENTO 250,00 180,00 100,00 200,00 300,00
Não sei como montar esta SQL. Será que alguem pode me ajudar?
Saudações/Hélio Nascimento
Helio Nascimento
Curtidas 0
Respostas
Micheus
26/06/2006
onde vc pretende utilizar esta informação: num relatório, na tela, num aquivo de exportação?
Não há uma meio de fazer isso diretamente num único comando SQL.
Não há uma meio de fazer isso diretamente num único comando SQL.
GOSTEI 0
Helio Nascimento
26/06/2006
micheus
Pretendo utilizar esta informação em um relatorio...
Será que tem jeito?
Pretendo utilizar esta informação em um relatorio...
Será que tem jeito?
GOSTEI 0
Motta
26/06/2006
De a estrutura da tabela, acho que dá para fazer com CASE.
GOSTEI 0
Helio Nascimento
26/06/2006
Caros amigos Motta/Micheus e todos os outros leitores deste maravilhoso forum.As vezes você se vê incapacitado de solucionar um problema. Voce traz o seu problema para o forum e ve ele descendo, descendo, algumas pessoas fazem a leitura e poucos ariscam a responder... e voce fica aguardando que alguem dá uma luz... Mas tem pessoas com mentes com uma lógica em programação bem apurada e olha o seu problema e resolve.
Voce fica ansiosamente aguardando que ele lhe passe a tão esperada solução que voce tentou, tentou e já estaria mudando de estratégia, e vem ele com a sua solução e lhe diz uma ´SP´ bem simpleszinha não é? É meu amigo bem simpleszinha mesmo, mas mesmo assim minha mente não consegui achar este caminho bem simpleszinho, bem abaixo vou postar a solução que este nosso amigo me passou, transferi a solução para o meu problema e eis que FUNCIONOU PLENAMENTE, E JA ESTA NO CLIENTE RODANDO, graças a este nosso colegas que tem socorrido várias outros como eu . Ele assina como EMERSON EN .
Emerson registro aqui a sua solução e fica meu eterno agradecimento.
Voce fica ansiosamente aguardando que ele lhe passe a tão esperada solução que voce tentou, tentou e já estaria mudando de estratégia, e vem ele com a sua solução e lhe diz uma ´SP´ bem simpleszinha não é? É meu amigo bem simpleszinha mesmo, mas mesmo assim minha mente não consegui achar este caminho bem simpleszinho, bem abaixo vou postar a solução que este nosso amigo me passou, transferi a solução para o meu problema e eis que FUNCIONOU PLENAMENTE, E JA ESTA NO CLIENTE RODANDO, graças a este nosso colegas que tem socorrido várias outros como eu . Ele assina como EMERSON EN .
Emerson registro aqui a sua solução e fica meu eterno agradecimento.
CREATE PROCEDURE RETORNO returns ( nome varchar(60), valor numeric(9,2), valor1 numeric(9,2), valor2 numeric(9,2), valor3 numeric(9,2), valor4 numeric(9,2), valor5 numeric(9,2), valor6 numeric(9,2)) as begin for select distinct nome from helio order by nome into :nome do begin valor1 = null; valor2 = null; valor3 = null; valor4 = null; valor5 = null; valor6 = null; for select valor from helio where nome = :nome into :valor do if (valor1 is null) then valor1 = valor; else if (valor2 is null) then valor2 = valor; else if (valor3 is null) then valor3 = valor; else if (valor4 is null) then valor4 = valor; else if (valor5 is null) then valor5 = valor; else if (valor6 is null) then valor6 = valor; suspend; end end
GOSTEI 0
Motta
26/06/2006
e se tiver 7 registros pro helio na tabela ??!!
GOSTEI 0
Helio Nascimento
26/06/2006
Motta
Este tipo de SP foi idealizada para o retorno de pagamento em até 6 cheques no máximo e precisaria para imprimir no relatório as informações dos valores e números dos cheques em apenas uma linha. Se amanhã houver a necessidade de ampliar para 7, 8.. voce terá que ampliar estes valores na SP , repetindo as informações. ok
Saudações.\ Hélio
Este tipo de SP foi idealizada para o retorno de pagamento em até 6 cheques no máximo e precisaria para imprimir no relatório as informações dos valores e números dos cheques em apenas uma linha. Se amanhã houver a necessidade de ampliar para 7, 8.. voce terá que ampliar estes valores na SP , repetindo as informações. ok
Saudações.\ Hélio
GOSTEI 0