Consulta SQL - Dúvida na cláusula where

1 resposta
R

Estou com o seguinte problema. Tenho uma query:

SELECT DISTINCT
     CONTRATO."CODCONTRATO" AS CONTRATO_CODCONTRATO,
     CLIENTE."CODCLIENTE" AS CLIENTE_CODCLIENTE,
     CONTRATO."DATA_ATIVACAO" AS CONTRATO_DATA_ATIVACAO,
     ENDERECO."DESCRICAO_BAIRRO" AS ENDERECO_DESCRICAO_BAIRRO,
     ENDERECO."COMPLEMENTO" AS ENDERECO_COMPLEMENTO,
     ENDERECO."NUMERO" AS ENDERECO_NUMERO,
     ENDERECO."ENDERECO" AS ENDERECO_ENDERECO,
     CEP_LOCALIDADE."NOME_SEM_ACENTO" AS CEP_LOCALIDADE_NOME_SEM_ACENTO,
     CEP_BAIRRO_A."NOME_SEM_ACENTO" AS CEP_BAIRRO_A_NOME_SEM_ACENTO
FROM
     "dbo"."CLIENTE" CLIENTE INNER JOIN "dbo"."CONTRATO" CONTRATO ON CLIENTE."CODCLIENTE" = CONTRATO."CODCLIENTE"
     INNER JOIN "dbo"."ENDERECO" ENDERECO ON CLIENTE."CODCLIENTE" = ENDERECO."CODCLIENTE"
     INNER JOIN "dbo"."CEP_LOCALIDADE" CEP_LOCALIDADE ON ENDERECO."CODLOCALIDADE" = CEP_LOCALIDADE."CODLOCALIDADE"
     INNER JOIN "dbo"."CEP_BAIRRO" CEP_BAIRRO_A ON ENDERECO."CODBAIRRO" = CEP_BAIRRO_A."CODBAIRRO"
     AND CEP_LOCALIDADE."CODLOCALIDADE" = CEP_BAIRRO_A."CODLOCALIDADE"
WHERE
     CONTRATO."SITUACAO" LIKE 'T'
     AND (ENDERECO."TIPO_ENDERECO" = 2 OR ENDERECO."TIPO_ENDERECO" = 3)

Na clausula where tenho a seguinte linha: AND (ENDERECO.“TIPO_ENDERECO” = 2 OR ENDERECO.“TIPO_ENDERECO” = 3)

Minha dúvida é: se eu tenho 1 cliente com os dois endereços ele trás:

CLIENTE 1 - BLÁBLÁ - ENDEREÇO 2
CLIENTE 1 - BLÁBLÁ - ENDEREÇO 3

Eu preciso que seja: Se o cliente possuir endereço do tipo 2, traga somente o resultado com endereço 2, senão traga o endereço 3. E não traga os dois juntos caso tenha os dois.

1 Resposta

fernei

bisildinho

Se tiver possibilidade coloca a estrutura do seu banco ai para este caso para dar uma ajuda estra ok.

A gora, pelo que vi vc limitou no seu Where o tipo de indereço que deseja. Caso não funcione sugiro que vc rode uma sub-query em cada tipo de endereço que vc tem.

Posta a estrutura das tabelas ai para facilitar ok!

Criado 30 de dezembro de 2008
Ultima resposta 30 de dez. de 2008
Respostas 1
Participantes 2