Sql 如何将具有空值的两行合并为一行以替换空值?

Sql 如何将具有空值的两行合并为一行以替换空值?,sql,postgresql,join,Sql,Postgresql,Join,我的sql查询得到以下结果: 身份证件 sp_名字 sp_姓氏 成员姓名 会员姓氏 1. 无效的 无效的 约翰 史密斯 2. 德胡安 麦克劳林 无效的 无效的 2. 无效的 无效的 杰克 麻雀 3. 约翰 散步的人 无效的 无效的 3. 无效的 无效的 夏洛克 福尔摩斯 4. 梅莉 杜根 无效的 无效的 4. 无效的 无效的 约翰 瓦斯顿 5. 露西 斯奈德 无效的 无效的 您可以使用外部查询包装结果,以使用max聚合列,并按id分组 select id, Max(sp_firstname)

我的sql查询得到以下结果:

身份证件 sp_名字 sp_姓氏 成员姓名 会员姓氏 1. 无效的 无效的 约翰 史密斯 2. 德胡安 麦克劳林 无效的 无效的 2. 无效的 无效的 杰克 麻雀 3. 约翰 散步的人 无效的 无效的 3. 无效的 无效的 夏洛克 福尔摩斯 4. 梅莉 杜根 无效的 无效的 4. 无效的 无效的 约翰 瓦斯顿 5. 露西 斯奈德 无效的 无效的
您可以使用外部查询包装结果,以使用
max
聚合列,并按
id
分组

 select id, Max(sp_firstname) as sp_firstname, Max(sp_lastname) as sp_lastname...
 from (
  <inner query>
 )x
 group by id
选择id,Max(sp_firstname)作为sp_firstname,Max(sp_lastname)作为sp_lastname。。。
从(
)x
按id分组

您可以使用外部查询包装结果,以使用
max
聚合列,并按
id
分组

 select id, Max(sp_firstname) as sp_firstname, Max(sp_lastname) as sp_lastname...
 from (
  <inner query>
 )x
 group by id
选择id,Max(sp_firstname)作为sp_firstname,Max(sp_lastname)作为sp_lastname。。。
从(
)x
按id分组
只需使用聚合:

select meeting.id,
       max(case when salesprofile.userid = "user".id then "user".firstname end) as sp_firstname,
       max(case when salesprofile.userid = "user".id then "user".lastname end) as sp_lastname,
       max(case when business.userid = "user".id then "user".firstname end) as member_firstname,
       max(case when business.userid = "user".id then "user".lastname end) as member_lastname
from meeting join
     project
     on project.id = meeting.projectid left join
     business
     on business.id = project.businessid left join
     salesprofile
     on salesprofile.id = meeting.salesprofileid left join
     "user"
     on "user".id = business.userid or "user".id = salesprofile.userid
group by meeting.id;
请注意对“分组依据”的更改。

只需使用聚合:

select meeting.id,
       max(case when salesprofile.userid = "user".id then "user".firstname end) as sp_firstname,
       max(case when salesprofile.userid = "user".id then "user".lastname end) as sp_lastname,
       max(case when business.userid = "user".id then "user".firstname end) as member_firstname,
       max(case when business.userid = "user".id then "user".lastname end) as member_lastname
from meeting join
     project
     on project.id = meeting.projectid left join
     business
     on business.id = project.businessid left join
     salesprofile
     on salesprofile.id = meeting.salesprofileid left join
     "user"
     on "user".id = business.userid or "user".id = salesprofile.userid
group by meeting.id;

请注意对
分组方式所做的更改。

Max可以很好地处理字符串。Max可以很好地处理字符串。