add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table tableA (
id_A varchar(20)
);

insert into tableA values
( 'insight1'),
( 'insight2'),
( 'insight3'),
( 'insight4'),
( 'insight5');

create table mappingAB (
id_A varchar(20),
id_B varchar(20)
);

insert into mappingAB values
( 'insight1' , 'obs1'),
( 'insight1' , 'obs2'),
( 'insight2' , 'obs1'),
( 'insight2' ,'obs2'),
( 'insight2' , 'obs3'),
( 'insight3' ,'obs1');

create table tableB (
id_B varchar(20),
source varchar(20)
);

insert into tableB values
( 'obs1' , 'AWS'),
( 'obs2' , 'GCP'),
( 'obs3' , 'GCP');
Records: 5  Duplicates: 0  Warnings: 0
Records: 6  Duplicates: 0  Warnings: 0
Records: 3  Duplicates: 0  Warnings: 0
select A.id_A, source
from tableA A
inner join mappingAB AB on AB.id_A = A.id_A
inner join tableB B on AB.id_B = B.id_B
id_A source
insight1 GCP
insight1 AWS
insight2 GCP
insight2 GCP
insight2 AWS
insight3 AWS
with cte as (
select A.id_A, source
from tableA A
inner join mappingAB AB on AB.id_A = A.id_A
inner join tableB B on AB.id_B = B.id_B
)
select id_A,
MAX(case when source = 'AWS' then 1 else 0 end) as AWS,
MAX(case when source = 'GCP' then 1 else 0 end) as GCP
from cte
group by id_A
id_A AWS GCP
insight1 1 1
insight2 1 1
insight3 1 0