select rules,behavior2,hig60_fpd,re60_fpd1 from a postgresql rules,behavior2,hig60_fpd,re60_fpd1中2项同时不为空,则赋值给新列,代码如何实现
时间: 2024-10-10 21:15:33 浏览: 24
在PostgreSQL中,如果你想从表a中选择rules,如果behavior2、hig60_fpd和re60_fpd1三个列同时不为空,然后将它们的值赋给一个新的列,你可以使用`COALESCE`函数来处理空值,然后结合`AND`逻辑进行筛选。假设新的列名为combined_data,你可以这样编写SQL查询:
```sql
SELECT a.*,
COALESCE(behavior2, 'default') AS behavior2,
COALESCE(hig60_fpd, 'default') AS hig60_fpd,
COALESCE(re60_fpd1, 'default') AS re60_fpd1,
CASE
WHEN behavior2 IS NOT NULL AND hig60_fpd IS NOT NULL AND re60_fpd1 IS NOT NULL THEN combined_data
ELSE NULL
END AS combined_data
FROM a
WHERE behavior2 IS NOT NULL AND hig60_fpd IS NOT NULL AND re60_fpd1 IS NOT NULL;
```
这里,`COALESCE(column_name, 'default')`会返回第一个非NULL的值,如果所有都为NULL则返回'default'。CASE语句用于检查这三个值都不为空时,才组合成combined_data列。
注意:这个例子假设你想把行为2、高度和恢复时间合并成一个字符串,如果需要其他类型的处理,你需要调整`COALESCE`部分的处理方式。
阅读全文