Dovresti qualificare la tabella t1.user_id disambiguare. Più altri aggiustamenti:
CREATE TABLE foo AS
SELECT user_id, (t1.the_date - (t2.the_date - t1.the_date)) AS start_date
FROM table1 t1
JOIN table2 t2 USING (user_id);
-
Sottraendo due date si ottiene un numero intero. Il cast era ridondante.
-
Non omettere il
ASparola chiave per gli alias di colonna - mentre generalmente è OK omettereASper gli alias di tabella. Il manuale:Puoi omettere
AS, ma solo se il nome di output desiderato non corrisponde a nessuna parola chiave PostgreSQL (vedi Appendice C). Per proteggersi da eventuali future aggiunte di parole chiave, si consiglia di scrivere sempreASo tra virgolette doppie il nome di output.) -
Unire tabelle con un
USINGla clausola ne mantiene solo uno istanza delle colonne di unione (user_idin questo caso) nel set di risultati e non devi più qualificarlo al tavolo.