Operasi satu kali dapat dicapai dengan UPDATE
biasa :
UPDATE tbl
SET one_year_survival = (survival OR survival_days >= 365);
Saya menyarankan untuk tidak menggunakan kotak unta, spasi dan tanda kurung dalam nama Anda. Meskipun diperbolehkan di antara tanda kutip ganda, ini sering menyebabkan komplikasi dan kebingungan. Pertimbangkan bab tentang pengidentifikasi dan kunci kata-kata dalam manual .
Tahukah Anda bahwa Anda dapat mengekspor hasil kueri sebagai CSV dengan COPY
?
Contoh:
COPY (SELECT *, (survival OR survival_days >= 365) AS one_year_survival FROM tbl)
TO '/path/to/file.csv';
Anda tidak memerlukan kolom yang berlebihan dengan cara ini untuk memulai.
Jawaban tambahan untuk komentar
Untuk menghindari pembaruan kosong:
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)
...
Secara pribadi, saya hanya akan menambahkan kolom yang berlebihan jika saya memiliki alasan yang kuat. Biasanya saya tidak akan melakukannya. Jika ini tentang kinerja:apakah Anda mengetahui indeks pada ekspresi dan indeks parsial ?