Ir para conteúdo
Fórum Script Brasil
  • 0

INNER JOIN


Danilo Martins

Pergunta

Boa tarde,

Estou com um grande problema, tenha a seguinte view:

SELECT a.ano_exercicio_ctx, a.cod_cliente_ctx,
       (CASE
           WHEN a.flg_usa_matriz_superior = 1
              THEN (SELECT (CASE
                               WHEN f.flg_usa_matriz_superior = 1
                                  THEN (SELECT g.idt_matriz_preco
                                          FROM siplag_obras_eletrobras.sco_contrato g
                                         WHERE g.idt_contrato =
                                                            f.idt_contrato_sup)
                               ELSE f.idt_matriz_preco
                            END
                           ) AS idt_matriz_preco
                      FROM siplag_obras_eletrobras.sco_contrato f
                     WHERE f.idt_contrato = a.idt_contrato_sup)
           ELSE a.idt_matriz_preco
        END
       ) AS idt_matriz_preco,
       a.dat_inicio_vigencia, a.dat_fim_vigencia, a.dsc_objeto, a.num_prazo,
       a.flg_ativo,
       (SELECT c.idt_contrato_sup
          FROM siplag_obras_eletrobras.sco_contrato c
         WHERE c.ind_tipo_contrato = 'E'
           AND c.idt_contrato = a.idt_contrato_sup) AS id_tranche,
       a.idt_contrato_sup AS id_projeto, a.idt_contrato AS id_ordem_servico,
       a.idt_raiz_arvore, a.flg_usa_matriz_superior, a.cod_area,
       a.ind_tipo_area, a.idt_tipo_obra, a.ind_tipo_contrato, a.num_contrato,
       a.ind_tipo_contratante, a.cod_contratante, a.ind_tipo_contratado,
       a.cod_contratado, a.flg_contratado_aprovado,
       a.flg_contratante_aprovado, a.dsc_localizacao
  FROM siplag_obras_eletrobras.sco_contrato a
 WHERE a.ind_tipo_contrato = 'O'

Este view é responsável por verificar se o contrato de uma empresa utiliza os preços do seu contrator superior, esta verificação é feita através da coluna flg_usa_matriz_superior. Até ai tudo certo...

Mas o que pega agora é que tenho que montar uma consulta verificando as tabelas de contrato e de preço,pela junção contrato._idt_matriz_preco = preço.idt_preco, mas para fazer esta juncao tenho que verificar se a flag que me mostra se o contrato utiliza o contrato superior é 1 ou 0, pois caso a o contrato tenha a flag como 1 tenho que pegar a matriz de preço s=do seu contrato superior..

Não sei como vou montar esta junção. Alguém poderia me ajudar?

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Boa tarde Danilo,

Este script que passou é uma view? você terá que fazer esta pesquisa dentro desta view?

você pode fazer um UNION para pegar as informações. Primeiro você faz o select pegando os dados que utiliza o contrato normal (flag=0). Depois você faz o select pegando os dados do contrato superior (flag=1).

Os relacionamentos e as cláusulas podem ser diferentes. A única coisa que é OBRIGATÓRIA é a quantidade e sequência dos campos.

Ex:

Select A, B, C, D, E from ContratoNormal, XXXX where XXXXX and AAAA...

UNION

Select A, B, C, D, E from ContratoSuperior, YYYY where YYYY and BBBB...

Caso tenha alguma dúvida, pode postar.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...