PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Fusionner les résultats du tableau en colonnes (pivot/crosstab ?)

Pour trouver l'horodatage le plus récent, utilisez d'abord l'opérateur de comparaison pour exclure les horodatages futurs. Ensuite, triez par plus petit intervalle en soustrayant les candidats d'horodatage possibles de l'horodatage souhaité. Pour obtenir uniquement le résultat le plus récent, limitez-vous à 1.

Pour obtenir la table2 val colonne à afficher avec les colonnes table1, il vous suffit d'exécuter le même code pour table2 dans une sous-requête.

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;