我想 return status 在使用 groupBy 时无法这样做

I want to return status unable to do so when using groupBy

select a.NAME
from tableA a 
left outer join tableB b on a.id = b.xxx_id
where a.is_deleted = false
group by a.Name having count(b.id) = 0;

使用上面的代码,returns 名称列表。

结果: 行名称

     1      Name1 
     2.     Name2
     3.     Name3

我正在使用以下代码 return 名称状态。

select a.NAME, a.name_status
from tableA a 
left outer join tableB b on a.id = b.xxx_id
where a.is_deleted = false
group by a.Name having count(b.id) = 0;

但是,当我添加 a.name_status 时,它给我一个错误,说 select 子句中的'a.name_status 既不是聚合也不在 group by 子句中。

期望的输出: 行名称。 Name_status

     1      Name1      Pending
     2.     Name2      Expired
     3.     Name3.     Active

鉴于您当前的查询,我猜想您可以使用 不存在 来完成,但要确保实际样本数据有助于澄清。

select a.NAME, a.name_status
from tableA a 
where a.is_deleted = false
and not exists (
  select * from tableB b
    where b.xxx_id = a.id
);