Engångsoperationen kan uppnås med en vanlig UPDATE
:
UPDATE tbl
SET one_year_survival = (survival OR survival_days >= 365);
Jag skulle råda dig att inte använda kamelfodral, blanksteg och parenteser i dina namn. Även om det är tillåtet mellan dubbla citattecken, leder det ofta till komplikationer och förvirring. Tänk på kapitlet om identifierare och nyckel ord i manualen .
Är du medveten om att du kan exportera resultaten av en fråga som CSV med COPY
?
Exempel:
COPY (SELECT *, (survival OR survival_days >= 365) AS one_year_survival FROM tbl)
TO '/path/to/file.csv';
Du skulle inte behöva den redundanta kolumnen på det här sättet till att börja med.
Ytterligare svar på kommentaren
För att undvika tomma uppdateringar:
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)
...
Personligen skulle jag bara lägga till sådana överflödiga kolumner om jag hade en övertygande anledning. Normalt skulle jag inte göra det. Om det handlar om prestanda:är du medveten om index på uttryck och partiella index a> ?