sql >> Base de Datos >  >> RDS >> PostgreSQL

Combinar los resultados de la tabla en columnas (pivot/crosstab?)

Para encontrar la marca de tiempo más reciente, primero use el operador de comparación para descartar futuras marcas de tiempo. A continuación, ordene por el intervalo más pequeño restando los posibles candidatos de marca de tiempo de su marca de tiempo deseada. Para obtener solo el resultado más reciente, limite 1.

Para obtener la tabla2 val columna para mostrar con las columnas de la tabla 1, solo necesita ejecutar el mismo código para la tabla 2 dentro de una 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;