Как соединить две таблицы в 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.[кат]
;