ajuda com select...

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
vivigrieco
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Seg, 10 Jul 2006 9:29 am
Localização: BH

Bom dia,
estou precisando modificar o sql abaixo. Eu tenho uma tabela chamada ESTRUTURA_ORGANIZACIONAL, onde, entre outros atributos, possui uma SIGLA e uma UNIDADE_SUPERIOR. Essa unidade superior é um id de outra estrutura_organizacional.

o q eu preciso fazer é verificar se a SIGLA começa com "SI". Caso ela comece, eu preciso fazer um outro select passando a UNIDADE_SUPERIOR como id da estrutura_organizacional. E caso ela não comece com "SI", eu pegue o valor da estrutura em questão.

Alguém pode me ajudar a fazer isso???

Meu SQL:

Selecionar tudo

select distinct
           f2.nome as nomeChefe,
           eo.sigla siglaEO,
           eo.nome nomeEO,
           eo.nom_tipo_logradouro tipo,
           eo.nom_logradouro logradouro,
           eo.numero numeroEO,
           eo.nom_bairro bairro,
           eo.nom_distrito_povoado distrito,
           lo.nome municipio,     
           uf.sigla uf,
           eo.cep cep,
           (eo.cod_tipo_complemento1||eo.des_complemento1|| '             '||eo.cod_tipo_complemento2||eo.des_complemento2||'  '||
           eo.cod_tipo_complemento3||eo.des_complemento3||'             '||eo.cod_tipo_complemento4||eo.des_complemento4||'  '||
           eo.cod_tipo_complemento5||eo.des_complemento5|| '             '||eo.cod_tipo_complemento6||eo.des_complemento6)  complemento
from funcionario f1, funcionario f2, papel_colaborador pc, ufw_papel u,
        estrutura_organizacional eo, localidade lo, uf
where ( f1.id_est_organizacional = eo.identificador) and
          (eo.sigla = pc.sigla_grupo_trabalho_colab) and
          (u.sigla_dominio (+) = pc.sigla_dominio_papel) and
          (u.sigla (+) = pc.sigla_papel) and
          (u.sigla = 'CHF_UNID') and
          (f2.identificacao_cpf = substr(pc.login_usuario_colab,5,11)) and
          (eo.id_localidade = lo.identificador) and
          (lo.id_uf = uf.identificador) and
          (f1.identificacao_cpf = :pLogin) and
          rownum = 1
Avatar do usuário
TBou
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 136
Registrado em: Qui, 05 Ago 2004 9:33 am
Localização: Campo Grande - MS
Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas

Olá vivigrieco.

Para este caso eu acho que você pode usar CASE pois dentro da clausula WHEN pode fazer select veja o exemplo abaixo:

Selecionar tudo

select case 
         when (1=2) then
           (select 1 from dual)
         else
           (select 2 from dual)
         end
from dual
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes