Em 19/04/11, André Ormenese<[email protected]> escreveu:
> Bom dia a todos.
>
> Pessoal, estou querendo fazer uma busca por aproximação de datas.
>
> Eu preciso saber, em uma tabela de resultados de exames, por exemplo, qual é
> o resultado de exame mais próximo de uma determinada data.
>
> Tentei através da função age, ou mesmo pelo subtração do resultado de exame
> pela data desejada, mas não consigo obter um resultado ordenado de forma
> satisfatória. Gostaria que a primeira linha no retorno do sql, fosse a data
> que mais se aproxima da data passada como parametro.
>
> Alguém tem alguma sugestão ???
>
>
> SELECT to_number(to_char((data_resultado -
> '2009-11-10'),'DD'),'99999999999') as diferenca, Exames_Soro.*,
> Hospital.Descricao
> FROM Exames_Soro
> INNER JOIN Hospital ON Exames_Soro.Hosp_Requisitante =
> Hospital.Cod_Hospital
> WHERE Codigo_Interno = 94 and data_resultado is not null
> ORDER BY diferenca DESC
>
>
> SELECT age(data_resultado, '2009-11-10') as diferenca, Exames_Soro.*,
> Hospital.Descricao
> FROM Exames_Soro
> INNER JOIN Hospital ON Exames_Soro.Hosp_Requisitante =
> Hospital.Cod_Hospital
> WHERE Codigo_Interno = 94 and data_resultado is not null
> ORDER BY diferenca DESC
>


Tente:

SELECT (CASE WHEN ('2009-11-10'::date > data_resultado) THEN
age(data_resultado, '2009-11-10'::date) ELSE
age('2009-11-10'::date,data_resultado) END) as diferenca,
Exames_Soro.*, Hospital.Descricao
FROM Exames_Soro
INNER JOIN Hospital ON Exames_Soro.Hosp_Requisitante = Hospital.Cod_Hospital
WHERE Codigo_Interno = 94 and data_resultado is not null
ORDER BY diferenca ASC;

Acrescente LIMIT 1 se desejar apenas o primeiro.

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a