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
AS
parola chiave per gli alias di colonna - mentre generalmente è OK omettereAS
per 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 sempreAS
o tra virgolette doppie il nome di output.) -
Unire tabelle con un
USING
la clausola ne mantiene solo uno istanza delle colonne di unione (user_id
in questo caso) nel set di risultati e non devi più qualificarlo al tavolo.