PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Unisci i risultati della tabella in colonne (pivot/tabella incrociata?)

Per trovare il timestamp più recente, utilizza prima l'operatore di confronto per escludere timestamp futuri. Quindi, ordina per intervallo più piccolo sottraendo possibili candidati al timestamp dal timestamp desiderato. Per ottenere solo il risultato più recente, limita 1.

Per ottenere la tabella2 val colonna da visualizzare con le colonne table1, devi solo eseguire lo stesso codice per table2 all'interno di una sottoquery.

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;