DÚVIDA EM CASE
CASE WHEN (SELECT TOP 1 Data FROM HISTORICO WHERE CodHist = S.Codigo) > '2024-06-01' THEN
(faz um calculo)
ELSE
0
END
o código acima faz parte de uma procedure que trata alguns mils registros todo dia e foi colocado esse case para fazer o calculo apenas dos registros onde a primeira data do histórico seja maior que 01/06/24, existe alguma chance de passar batido?
pois teve um registro onde a data top 1 era 2024-04-17, nesse código ele não poderia fazer o cálculo, teria que retornar 0 (zero), porem ele passou.
caso 2024-04-17 > 2024-06-01
faça o calculo
senão
0
fim
da forma que está tem brecha para isso?
Bom dia 3SLUIS,
Em se tratando de comparar datas, aconselho a formatar a data, para que tenha certeza de estar comparando com formatos iguais.
FORMAT, CAST, CONVERT ... são algum das funções do SQL que podem te ajudar a garantir o mesmo formato.
Em se tratando de comparar datas, aconselho a formatar a data, para que tenha certeza de estar comparando com formatos iguais.
FORMAT, CAST, CONVERT ... são algum das funções do SQL que podem te ajudar a garantir o mesmo formato.
Alterado em 12/06/2024 10:31:40
SELECT TOP 1 Data FROM HISTORICO WHERE CodHist = S.Codigo
Esse SELECT não garante ordem, então a menor data até pode ser 2024-04-17 mas o primeiro registro retornado pode ser outro, tente ordenar os dados pela dataSELECT TOP 1 Data FROM HISTORICO WHERE CodHist = S.Codigo ORDER BY Data
Ou em vez do TOP 1 use a função agragada MINSELECT MIN(Data) FROM HISTORICO WHERE CodHist = S.Codigo
Faça seu login para responder