Como montar uma SQL com dados colunados em Linha

Delphi

26/06/2006

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


Helio Nascimento

Helio Nascimento

Curtidas 0

Respostas

Micheus

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.


GOSTEI 0
Helio Nascimento

Helio Nascimento

26/06/2006

micheus

Pretendo utilizar esta informação em um relatorio...

Será que tem jeito?


GOSTEI 0
Motta

Motta

26/06/2006

De a estrutura da tabela, acho que dá para fazer com CASE.


GOSTEI 0
Helio Nascimento

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.



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

Motta

26/06/2006

e se tiver 7 registros pro helio na tabela ??!!


GOSTEI 0
Helio Nascimento

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


GOSTEI 0
POSTAR