[firebase-br] Case when

W O sistemas2000profesional em gmail.com
Qui Dez 19 22:21:39 -03 2013


Cada uno de los SELECTs que se encuentran dentro del SELECT principal
solamente puede devolver UNA FILA. Si devuelven más de una fila entonces
verás el mensaje: "multiple rows in singleton select".

Y es lógico, porque lo que tú estás queriendo mostrar es el nombre de UN
PACIENTE y si el SELECT te devuelve el nombre de 500 pacientes ¿cuál de
ellos es el correcto?

Por lo tanto, en tu SELECT interno debes poner una cláusula WHERE para que
el resultado se limite a *una sola fila*.

Puedes ver un ejemplo aquí:

http://firebird21.wordpress.com/2013/12/19/consultas-con-columnas-condicionales/

Saludos.

Walter.



2013/12/19 Carlos Midia <carlosmidia2013 em gmail.com>

> Boa noite, desde já agradeço pela ajuda.
> montei o sql porem dar a mensagem:
> multiple rows in singleton select
>
> Select Num_Protoc,
>        Dat_Saida,
>        Dat_Presc,
>        Num_Rec,
>        Sta_Saida,
>        Case when  (trim(Nom_Client) <> ' ')  then trim(Nom_Client)
>        else
>       ( select Nom_pacien as descricao from saida) end as descricao
>       from saida
>
> no select só esta envolvida a tabela saida.
>
>
> Em 19 de dezembro de 2013 20:51, Fernando Correa <fjcnando em ig.com.br
> >escreveu:
>
> > Select Num_Protoc,
> >           Dat_Saida,
> >           Dat_Presc,
> >           Num_Rec,
> >          Sta_Saida,
> >         Case when  (trim(Nom_Client) <> ' ')  then trim(Nom_Client)
> >
> > else
> >                 ( select Nom_pacien as descricao from saida
> >                   where saida. ...... ) end as descricao
> >
> > ... aqui coloca-se o from
> >
> >
> > agora voce precisa escrever os from´s corretos....
> >
> >
> >
> > Espero ajudar
> >
> >
> > Atenciosamente
> > Fernando Correa
> >
> >
> > Em 19 de dezembro de 2013 21:00, Carlos Midia
> > <carlosmidia2013 em gmail.com>escreveu:
> >
> > > Boa noite a todos, preciso de um select ao qual a pesquisa no campo
> > > descricao retorne Nom_Cliente ou Nom_Pacient.
> > >
> > > na tabela de Saida os registros estão preenchidos o campo Nom_Client ou
> > > Nom_Paciente.
> > >
> > > Select Num_Protoc, Dat_Saida, Dat_Presc, Num_Rec,  Sta_Saida,
> > > Descricao Case when  Nom_Client <> ' '  then ( select Nom_Client as
> > > des_Forn from saida) else
> > > ( select Nom_pacien as descricao from saida) end as descricao
> > >
> > > fiz dessa forma acima mais não deu certo.
> > >
> > > se o campo Nom_Cliente for diferente de vazio então o campo descricao
> > sera
> > > igual ao Nom_Cliente e se for igual a vazio o campo descricao sera
> igual
> > ao
> > > Nom_Paciente.
> > >
> > > desde já agradeço.
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> >
> >
> >
> > --
> > Atenciosamente
> > Fernando Correa
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista