select rules,behavior2,hig60_fpd,re60_fpd1 from a rules,behavior2,hig60_fpd,re60_fpd1中任意2项不为空,则赋值给新列,postgresql代码如何实现
时间: 2024-10-10 21:15:28 浏览: 22
【船级社】 DNV Rules for classification Rules for classification_ Hig
在PostgreSQL中,如果你想从表`a`中选择`rules`, `behavior2`, `hig60_fpd`, 和 `re60_fpd1`这四列,然后只保留其中任意两列不为空的记录,并将它们赋值给新的列,你可以使用`COALESCE`函数结合`CASE`表达式来实现。`COALESCE`函数用于返回第一个非NULL的参数。下面是一个示例SQL代码:
```sql
SELECT
CASE
WHEN COALESCE(rules, behavior2, hig60_fpd, re60_fpd1) IS NOT NULL THEN rules
WHEN COALESCE(NULLIF(rules, hig60_fpd), behavior2, re60_fpd1) IS NOT NULL THEN behavior2
WHEN COALESCE(NULLIF(rules, behavior2), hig60_fpd, re60_fpd1) IS NOT NULL THEN hig60_fpd
ELSE re60_fpd1
END AS new_column,
-- 如果你想保留其他列,可以添加更多的条件
COALESCE(rules, behavior2, hig60_fpd, re60_fpd1) AS second_new_column
FROM
a;
```
这里假设`new_column`是你想要的新列,`second_new_column`是保留的第二列(如果需要的话)。如果有更多可能的组合,你需要继续添加`WHEN`条件。
阅读全文