Ir para conteúdo
  • Cadastre-se

dev botao

sql consulta


  • Este tópico foi criado há 2487 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

ola estou com uma duvida em sql 

tenho seguinte situação

a mensalidade do cliente vence dia 10 por exemplo so que ele vai remarcar para dia 15 

so que nao posso mudar o campo data vencimento tenho outro campo chamado data_rema  

agora queria saber se tem como eu fazer no where unificar esses dois campos para colocar unica data se pegar a mesma data trazer

 

se um nao tiver preenchido ele vai trazer pelo outro mas o que nao pode e colocar dia 10 e ele vim se tiver remarcado  

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Em Firebird você pode usar o coalesce.

select campo1, campo2, data_vencto, data_rema from tabela where coalesce(data_rema, data_vencto) = :data

Caso data_rema seja null, a query usará data_vencto para a consulta.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

Se eu bem entendi, todos os registros devem ser trazidos, porém se tem a data remarcada ele puxa essa data e caso contrário puxa a data original, correto? Se for isso, pode seguir essa lógica, mudando algo se for necessário:

select
      (case when (cast(re.dt_venc as varchar(15)) <> '') and (coalesce(cast(re.dt_rema as varchar(15)),'') = '') then re.dt_venc
            when (cast(re.dt_rema as varchar(15)) <> '') then re.dt_rema
            else current_date
       end
      ) dt_doc
from receber re

Foi o que consegui pensar de solução para seu problema mais rapidamente, pode dar uma melhorada na lógica, mas em base vai funcionar.

Um link interessante também para estudar SQL e até mesmo treinar é o W3 Schools, dá uma conferida ;)

Link para o comentário
Compartilhar em outros sites

ola obrigado a logica para mostrar no sql deu certo mais a questao é usar esse campo no where que nao vai exemplo

 

 

where

dt_doc BETWEEN :DATAVENC_01 AND :DATAVENC02

 

deu certo fiz assim

 

 WHERE

 ( select       CASE
    WHEN (j.datvenc  IS not NULL) and (j.data_rema  IS NULL)  THEN j.datvenc
    WHEN (j.datvenc  IS not NULL) and (j.data_rema  IS not NULL)  THEN j.data_rema
    END data_juntas
    from TAB_CONTA_REC_PAG j  where j.id_rec_pag =c.id_rec_pag)=:DATAVENC02

 

mas queria usar o  BETWEEN e nao esta dando certo 

Link para o comentário
Compartilhar em outros sites

Na verdade está um pouco confuso a intenção do select e o ambiente que está sendo feito, se pudesse nos passar mais informações sobre o conjunto, quais campos, para que usaria o select e de que forma gostaria de que o mesmo fosse disposto, esse tipo de coisa, para que possamos ter uma visão geral e consequentemente uma solução melhor, até mesmo a questão do período seria relevante para que saibamos quais cláusulas usar.

Link para o comentário
Compartilhar em outros sites

os campos seria datavencimento e data remarcacao

 

a pessoa colocaria dia 10 traria os que vence dia 10 mais so que tem cliente que vence dia 10 e marcar para dia 15(no campo data remarcação)  e os que remarcou nao pode aparecer no dia 10 e a data de vencimento nao mudo permanece dia 10

so que pode acontecer de pegar  do inicio do mes ate dia 10 por exemplo os que vao vencer nesse periodo 

3 horas atrás, BigWings disse:

Em Firebird você pode usar o coalesce.


select campo1, campo2, data_vencto, data_rema from tabela where coalesce(data_rema, data_vencto) = :data

Caso data_rema seja null, a query usará data_vencto para a consulta.

DEU CERTO OBRIGADO GENTE, VOCES SAO DE MAIS.!!!! JA É 3º QUE DEIXO COMENTARIO NO FORUM E TENHO AJUDA!! OBRIGADO TODAS AS LOGICAS  PARA MOSTRAR NO SQL DEU CERTO E AGORA NO WHERE!!!

3 horas atrás, Wess disse:

Se eu bem entendi, todos os registros devem ser trazidos, porém se tem a data remarcada ele puxa essa data e caso contrário puxa a data original, correto? Se for isso, pode seguir essa lógica, mudando algo se for necessário:


select
      (case when (cast(re.dt_venc as varchar(15)) <> '') and (coalesce(cast(re.dt_rema as varchar(15)),'') = '') then re.dt_venc
            when (cast(re.dt_rema as varchar(15)) <> '') then re.dt_rema
            else current_date
       end
      ) dt_doc
from receber re

Foi o que consegui pensar de solução para seu problema mais rapidamente, pode dar uma melhorada na lógica, mas em base vai funcionar.

Um link interessante também para estudar SQL e até mesmo treinar é o W3 Schools, dá uma conferida ;)

DEU CERTO OBRIGADO GENTE, VOCES SAO DE MAIS.!!!! JA É 3º QUE DEIXO COMENTARIO NO FORUM E TENHO AJUDA!! OBRIGADO TODAS AS LOGICAS  PARA MOSTRAR NO SQL 

Link para o comentário
Compartilhar em outros sites

13 minutos atrás, Juliomar Marchetti disse:

Boa tarde

somente peço para que leia as regras e evite escrever em maiúsculo todo o texto

ok... me desculpe

tenho outra duvida nao sei é o caso nesse post... quero usar o DBComboBox2   e marcar por exemplo varios bairros na pesquisa 

 

tentei usar o 

where

bairro in (teste1, teste2)  em tempo de desegin ele nao roda sera estou fazendo algo errdo 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2487 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...