PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Mesclar resultados da tabela em colunas (pivot/crosstab?)


Para encontrar o carimbo de data/hora mais recente, primeiro use o operador de comparação para descartar carimbos de data/hora futuros. Em seguida, ordene pelo menor intervalo subtraindo possíveis candidatos de timestamp do timestamp desejado. Para obter apenas o resultado mais recente, limite 1.

Para obter a tabela2 val coluna para exibir com as colunas table1, você só precisa executar o mesmo código para table2 dentro de uma subconsulta.
SELECT update_time AS time, id1, id2, val, (
  SELECT val from table2 
  WHERE '2004-10-19 10:04:00' >= update_time
  ORDER BY '2004-10-19 10:04:00' - update_time
  LIMIT 1
)
FROM table1 WHERE '2004-10-19 10:04:00' >= update_time
ORDER BY '2004-10-19 10:04:00' - update_time
LIMIT 1;