PostgreSQL CASE ... END with multiple conditions
This kind of code perhaps should work for You
SELECT *, CASE WHEN (pvc IS NULL OR pvc = '') AND (datepose < 1980) THEN '01' WHEN (pvc IS NULL OR pvc = '') AND (datepose >= 1980) THEN '02' WHEN (pvc IS NULL OR pvc = '') AND (datepose IS NULL OR datepose = 0) THEN '03' ELSE '00' END AS modifiedpvcFROM my_table; gid | datepose | pvc | modifiedpvc -----+----------+-----+------------- 1 | 1961 | 01 | 00 2 | 1949 | | 01 3 | 1990 | 02 | 00 1 | 1981 | | 02 1 | | 03 | 00 1 | | | 03(6 rows)