Это может быть не так, чтобы использовать самостоятельное соединение. Это будет работать для данных, которые вы разместили:
select
col1,
max(case col3 when 'A' then col2 else null end) col2A,
max(case col3 when 'B' then col2 else null end) col2B
from YourTable
group by col1
Конечно, если у вас есть данные, как показано ниже, произойдет сбой:
col1 col2 col3
abc 123 A
abc 345 B
abc 567 A
Опять же, не только запрос потерпит неудачу, но и все ваше бизнес-правило не будет работать, если у вас есть такие данные.