Вы можете сделать это с помощью объединения и группировки по
declare @PL table (client int, ProductCode char(1), Sort int);
insert into @pl values
(1, 'A', 1),
(1, 'B', 2),
(1, 'F', 3),
(1, 'G', 4),
(1, 'K', 5),
(2, 'C', 1),
(2, 'A', 2),
(3, 'B', 1),
(3, 'K', 2),
(3, 'G', 3);
--select * from @PL;
declare @PP table (ProductType varchar(10), Client int, ProductCode char(1), Price int);
insert into @PP values
('Type 1', 1, 'A', 100),
('Type 1', 1, 'A', 150),
('Type 1', 1, 'B', 200),
('Type 1', 1, 'B', 120),
('Type 1', 1, 'F', 150),
('Type 2', 1, 'A', 200),
('Type 2', 1, 'A', 300),
('Type 2', 1, 'B', 300),
('Type 2', 1, 'F', 400),
('Type 2', 1, 'G', 125),
('Type 2', 1, 'G', 75),
('Type 1', 2, 'A', 190),
('Type 1', 2, 'A', 130),
('Type 1', 2, 'A', 200),
('Type 1', 2, 'B', 270),
('Type 1', 2, 'B', 180),
('Type 1', 2, 'F', 130),
('Type 2', 2, 'A', 210),
('Type 2', 2, 'A', 100),
('Type 2', 2, 'B', 350),
('Type 2', 2, 'F', 200),
('Type 2', 2, 'G', 175),
('Type 2', 2, 'G', 95),
('Type 2', 2, 'K', 65);
--select * from @pp;
select pl.client, pl.ProductCode
--, pp1.Price as Price1, pp2.Price as Price2
, max(isnull(pp1.Price, isnull(pp2.Price, 0))) as Price12
from @PL pl
left join @PP pp1
on pp1.ProductCode = pl.ProductCode
and pp1.Client = pl.client
and pp1.ProductType = 'Type 1'
left join @PP pp2
on pp2.ProductCode = pl.ProductCode
and pp2.Client = pl.client
and pp2.ProductType = 'Type 2'
where pl.client in (1, 2)
group by pl.client, pl.ProductCode
order by pl.client, pl.ProductCode;