PostgreSQL CASE ... END 有多个条件

标签 postgresql case

这是我的表格的摘录:

  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)

关于PostgreSQL CASE ... END 有多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27800119/

相关文章:

python - Web2py DAL 查找最新日期的记录

ruby-on-rails - Postgres 未定义表 : ERROR: relation

java - 如何使用 ActiveJDBC 在 postgres 中检索自动生成的主键

sql - 在 SQL CASE where 子句中使用 BETWEEN

php - 在循环中连接 mysql 查询语句

sql-server - SQL 在 where 子句中使用 CASE

python - 如何诊断 Flask 性能不佳?

sql - 使用SQL查找给定x,y坐标的填充矩形

mysql - 如何将键映射到 MySQL 选择查询中单个字段的值

sql - 使用 case 语句进行查询的方法