SQL求助:如何将两列非空租户姓名合并为单列?
问题描述
现有两个存储租户信息的表:r.renter(租户姓名存于own1字段)、t.renter(租户姓名存于name字段);同时存在一张账户关联表,结构及数据如下:
Acct Owner1 Owner2 256 ABC NULL 478 NULL FGH
需要将该账户关联表转换为以下格式:
Acct Owner 256 ABC 478 FGH
实现方案
针对账户关联表的转换需求,有两种常用的SQL实现方式:
方法1:使用COALESCE函数
COALESCE函数会返回参数列表中第一个非NULL的值,刚好匹配当前场景(每条数据中Owner1和Owner2仅有一个非空):
SELECT Acct, COALESCE(Owner1, Owner2) AS Owner FROM 账户关联表名;
方法2:使用CASE WHEN条件判断
如果需要更直观的逻辑控制,可以用CASE WHEN实现:
SELECT Acct, CASE WHEN Owner1 IS NOT NULL THEN Owner1 ELSE Owner2 END AS Owner FROM 账户关联表名;
如果Owner1和Owner2的值需要分别从r.renter.own1和t.renter.name关联获取,可以扩展为关联查询:
SELECT a.Acct, COALESCE(r.own1, t.name) AS Owner FROM 账户关联表名 a LEFT JOIN r.renter r ON a.Owner1 = r.own1 LEFT JOIN t.renter t ON a.Owner2 = t.name;
内容的提问来源于stack exchange,提问作者SJac
相关产品推荐
相关产品推荐

