Engangsoperationen kan opnås med en almindelig UPDATE
:
UPDATE tbl
SET one_year_survival = (survival OR survival_days >= 365);
Jeg vil råde dig til ikke at bruge kamel-kasse, mellemrum og parentes i dine navne. Selvom det er tilladt mellem dobbelte anførselstegn, fører det ofte til komplikationer og forvirring. Overvej kapitlet om identifikatorer og nøgler ord i manualen .
Er du klar over, at du kan eksportere resultaterne af en forespørgsel som CSV med COPY
?
Eksempel:
COPY (SELECT *, (survival OR survival_days >= 365) AS one_year_survival FROM tbl)
TO '/path/to/file.csv';
Du ville ikke have brug for den redundante kolonne på denne måde til at begynde med.
Yderligere svar til kommentar
Sådan undgår du tomme opdateringer:
UPDATE tbl
SET "Dead after 1-yr" = (dead AND my_survival_col < 365)
,"Dead after 2-yrs" = (dead AND my_survival_col < 730)
....
WHERE "Dead after 1-yr" IS DISTINCT FROM (dead AND my_survival_col < 365)
OR "Dead after 2-yrs" IS DISTINCT FROM (dead AND my_survival_col < 730)
...
Personligt ville jeg kun tilføje sådanne overflødige kolonner, hvis jeg havde en tvingende grund. Normalt ville jeg ikke. Hvis det handler om ydeevne:er du opmærksom på indekser på udtryk og delvise indekser a> ?