这是我的表的摘录:
gid | datepose | pvc ---------+----------------+------------ 1 | 1961 | 01 2 | 1949 | 3 | 1990 | 02 1 | 1981 | 1 | | 03 1 | |
我想使用SELECT CASE填写PVC列,如下所示:
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子句中使用多个条件的问题?
感谢您的帮助和建议!
这种代码也许应该适合你
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)
原文地址:https://www.jb51.cc/postgresql/192971.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。