ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[RESOLVIDO]Buscar a menor data, função MIN não está funciona

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
x7r3m3x
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 7 de Fevereiro de 2014
Mensagens: 192

MensagemEnviada: Qui Ago 17, 2017 12:57 am    Assunto: [RESOLVIDO]Buscar a menor data, função MIN não está funciona Responder com Citação

Olá Pessoal,

Eu tenho este seguinte código
Código:

select *
from DET_FOLHA_PAGAMENTO A
where A.FK_IDFOLHA_PAGAMENTO = '4' and
      A.DATA_VENCIMENTO > '16.08.2017' and
      A.DATA_VENCIMENTO = (select min(A.DATA_VENCIMENTO)
                           from DET_FOLHA_PAGAMENTO A)


Como podem ver eu pego ALL(tudo) da tabela DET_FOLHA_PAGAMENTO onde o código da FK_IDFOLHA_PAGAMENTO = '4'
onde a DATA_VENCIMENTO > '16.08.2017'
e depois tento pegar a menor data de todas as que foram encontradas e ai é que está o problema, não está pegando a menor data, mas se eu trocar o min para max ele pega a maior data. Poderiam me dizer o porque disso?

Só para constar este código onde não busco pelo minimo o resultado das datas é:
Código:

select *
from DET_FOLHA_PAGAMENTO A
where A.FK_IDFOLHA_PAGAMENTO = '4' and
      A.DATA_VENCIMENTO > '16.08.2017'


Resultado:
01.09.2017 - Estou tentando pegar esta com o min porém não encontra nada
01.10.2017 - Se eu troco para max ele pega está data que está correto, porém o que eu quero é a menor data que é a de cima

OBS: Assim a função min funciona porém não me trás o resultado desejado.
Código:

select min(A.DATA_VENCIMENTO)
from DET_FOLHA_PAGAMENTO A


Desde já agradecido!
Código:


Editado pela última vez por x7r3m3x em Qui Ago 17, 2017 3:42 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Qui Ago 17, 2017 8:39 am    Assunto: Responder com Citação

Faz um teste com esse código:

Código:
select *
from DET_FOLHA_PAGAMENTO A
where A.FK_IDFOLHA_PAGAMENTO = '4' and
      A.DATA_VENCIMENTO = (select min(B.DATA_VENCIMENTO)
                           from DET_FOLHA_PAGAMENTO B
                           where B.DATA_VENCIMENTO >'16.08.2017')
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Ago 17, 2017 10:23 am    Assunto: Responder com Citação

Bom dia,

x7r3m3x, experimente fazer uns testes dessa forma:

Código:
select *
from DET_FOLHA_PAGAMENTO
where FK_IDFOLHA_PAGAMENTO = '4' and
      DATA_VENCIMENTO = (select min(DATA_VENCIMENTO)
                         from DET_FOLHA_PAGAMENTO
                         where FK_IDFOLHA_PAGAMENTO = '4' and
                               DATA_VENCIMENTO > '16.08.2017')


Espero que ajude


Editado pela última vez por imex em Qua Out 25, 2023 12:14 pm, num total de 2 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
x7r3m3x
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 7 de Fevereiro de 2014
Mensagens: 192

MensagemEnviada: Qui Ago 17, 2017 3:41 pm    Assunto: Responder com Citação

imex escreveu:
Bom dia,

x7r3m3x, experimente fazer uns testes dessa forma:

Código:
select *
from DET_FOLHA_PAGAMENTO
where FK_IDFOLHA_PAGAMENTO = '4' and
      DATA_VENCIMENTO = (select min(DATA_VENCIMENTO)
                         from DET_FOLHA_PAGAMENTO
                         where FK_IDFOLHA_PAGAMENTO = '4' and
                               DATA_VENCIMENTO > '16.08.2017')


Espero que ajude


Bom dia! Este código deu certo, parece que é necessário passar o código no where
Citação:
FK_IDFOLHA_PAGAMENTO = '4'
novamente para funcionar.
Mas achei estranho porque na função max não é necessário fazer isso só na função min. Será um bug?
Mas deu certo! Obrigado a todos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Ago 17, 2017 9:01 pm    Assunto: Responder com Citação

Essa condição no Where também é necessária com a função Max, não é bug não. Acho que provavelmente funcionou sem ela porque o registro da tabela com a maior data tinha o campo FK_IDFOLHA_PAGAMENTO igual a '4', se fosse diferente também daria problema.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB