[firebase-br] Case when

W O sistemas2000profesional em gmail.com
Qui Dez 19 23:21:59 -03 2013


Es que estás usando NOM_CLIENT en tu condición y en tu SELECT, utiliza otra
columna para hacer la comparación. ¿No tienes algún identificador?

¿Cuál es el error?

Saludos.

Walter.





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

> Boa noite, tentei da forma abaixo porem não deu também.
>
> SELECT
>    Num_Protoc,
>    Dat_Saida,
>    Dat_Presc,
>    Num_Rec,
>    Sta_Saida,
>    CASE
>       WHEN Nom_Client <>'' THEN (SELECT Nom_Client FROM SAIDA WHERE
> Num_Protoc = Num_Protoc)
>       WHEN Nom_pacien <>'' THEN (SELECT Nom_pacien FROM SAIDA WHERE
> Num_Protoc = Num_Protoc)
>    END AS NOMBRE
> FROM
>    SAIDA
> WHERE
>    Num_Protoc IN (33,34)
>
>
> Em 19 de dezembro de 2013 21:21, W O
> <sistemas2000profesional em gmail.com>escreveu:
>
> > 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
> > >
> > ______________________________________________
> > 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