Вот выдержка из моей таблицы:
gid | datepose | pvc
---------+----------------+------------
1 | 1961 | 01
2 | 1949 |
3 | 1990 | 02
1 | 1981 |
1 | | 03
1 | |
Я хочу заполнить столбик из ПВХ, используя SELECT CASE
как показано ниже:
SELECT
gid,
CASE
WHEN (pvc IS NULL OR pvc = '') AND datpose < 1980) THEN '01'
WHEN (pvc IS NULL OR pvc = '') AND datpose >= 1980) THEN '02'
WHEN (pvc IS NULL OR pvc = '') AND (datpose IS NULL OR datpose = 0) THEN '03'
END AS pvc
FROM my_table ;
Результат - то же содержимое, что и исходная таблица, ничего не произошло, и я не получаю сообщения об ошибке в файлах pg_log. Это может быть синтаксическая ошибка или проблема с использованием нескольких условий в предложениях WHEN?
Спасибо за помощь и совет!
postgresql
case
Wiltomap
источник
источник
NULL
Например , строка, содержащая, например,Ответы:
Такой код, возможно, подойдет вам
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 modifiedpvc FROM 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)
источник
ELSE '00'
на,ELSE pvc
чтобы сохранить существующие значения вpvc
столбце, иначе они будут начислены «00» (регистрpvc IS NOT NULL
). Большое спасибо!