sql - 将三列合并为一列

标签 sql postgresql

我有如下的sql语句:

SELECT p.id, p.first_name, p.last_name, a.admitted_at,
       a.discharged_at, c.name as client_name, p.receive_reminders,
       p.opt_in_to_receive_reminders, u.phone_number, p.status,
       c.id as client_id, p.mrn
  FROM patients p
  LEFT JOIN admissions a ON p.last_admission_id = a.id
  INNER JOIN facilities f ON f.id = p.facility_id
  INNER JOIN clients c ON c.id = f.client_id
  LEFT OUTER JOIN users u ON p.user_id = u.id;

我有三列:

p.opt_in_to_receive_reminders - boolean
u.phone_number - string
p.receive_reminders - boolean

我想将这 3 列的结果合并到一个虚拟列中 - messaging。例如,如果 p.opt_in_to_receive_reminders 为真且 u.phone_number 不为空且 p.receive_reminders 为真,则此列将具有真值,在其他情况下它将返回 false。

我如何在 PostgreSQL 中执行此操作?

最佳答案

就这么写吧

p.opt_in_to_receive_reminders is true and if u.phone_number is not empty and p.receive_reminders is true

作为

select p.opt_in_to_receive_reminders and u.phone_number is not null and p.receive_reminders
-- or
select p.opt_in_to_receive_reminders and u.phone_number <> '' and p.receive_reminders
-- or
select p.opt_in_to_receive_reminders and coalesce(u.phone_number, '') is null and p.receive_reminders

关于sql - 将三列合并为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40511858/

相关文章:

postgresql - 触发 .. AFTER 和 BEFORE 特定列已更改

sql - 带有 IN 的多个表达式

r - 当多个用户使用 Rshiny 在 postgresql 数据库中保存数据时出现问题(创建了唯一行的许多重复项)

php - 我正在尝试通过 href 将一个值传递给 php 页面,以从 mysql 数据库的那一行检索其余数据

mysql - SQL查询(SELECT)找到值时是否继续或停止从表中读取数据

SQL - 根据访问频率拆分大表?

java - Hibernate 创建错误的创建表语句?

sql - 如何在 PostgreSQL 中将 NULL 值设置为数字?

sql - Azure SQL Server 无法创建表

asp.net - 如何获取插入表的最后一行的主键