Как соединить две таблицы в SQL

У меня есть две таблицы Таблица 1. Должности с их зарплатой имеет вид:

Должность 1 2 3 4
SPE-A 100 120 130 140
SPE-B 200 220 230 240

Таблица 2.

Имя должность кат
О. Петров SPE-B 2
И. Иванов SPE-A 4

В итоге, хотелось бы видеть такой результат:

Имя должность кат оплата
О. Петров SPE-B 2 220
И. Иванов SPE-A 4 140

Ответы (1 шт):

Автор решения: ValNik

Примерно так (Sqlite):

select p.[Имя],p.[Должность],p.[кат]
  ,case when p.[кат]=1 then s.[1]
        when p.[кат]=2 then s.[2]
        when p.[кат]=3 then s.[3]
        when p.[кат]=4 then s.[4]
   else null
   end [оплата]
from person p
left join table1 s on s.[Должность]=p.[Должность] 

Посмотрите пример для SQL Server с UNPIVOT:

with PositionSalary as(
SELECT [Должность], [кат],[оплата]
FROM   
   (SELECT [Должность],[1],[2],[3],[4]
   FROM table1) p  
UNPIVOT  
   ([оплата] FOR [кат] IN   
      ([1],[2],[3],[4])  
   )AS unpvt
)
select [Имя],p.[Должность],p.[кат],[Оплата] 
from person p
inner join positionSalary s 
  on p.[Должность]=s.[Должность] 
   and p.[кат]=s.[кат]
  ;
→ Ссылка