Jump to content

dev botao

sql consulta


dreamsoft_PR
  • Este tópico foi criado há 2650 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 

  • Like 1
Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.