У меня есть две таблицы, одна для разрешений на работу сотрудников, а другая для боссов, которых они получали за это разрешение, таблицы боссов имеют уникальные значения, связанные с определенным сотрудником, который может иметь много разрешений (отпуск, медицинские причины и т. Д.) , Таблица боссов связана с сотрудниками по уникальному идентификатору сотрудника, а также по дате, когда они были начислены, и по периоду. Я изо всех сил пытаюсь присоединиться к этим таблицам, потому что, очевидно, я не могу установить взаимосвязь «многие к одному» с этими двумя условиями.
idemp convert() nameemp
-----------------
1 201801 john
1 201801 john
2 201802 jane
idemp period nameboss
------------------
1 201801 orange
2 201802 pink
3 201802 brown
Что я ищу:
idemp convert() nameemp nameboss
-----------------------------
1 201801 john orange
1 201801 john orange
2 201802 jane pink
Я пробовал внешнее применение и оставил соединение, но я получаю нули, где идентификатор повторяется более одного раза , поэтому я получаю что-то вроде:
idemp convert() nameemp nameboss
-----------------------------
1 201801 john orange
1 201801 john NULL
2 201802 jane pink
Мой код пытается
Наружное применение:
SELECT t.idemp, t.period, t.nameemp, d.nameboss
FROM dbo.employeePermit AS T
outer apply (select top (1) d.* from bossDot d where D.period= CONVERT(nvarchar(6), T.ORIGINAL_INI, 112) AND D.IDemp = T.IDemp order by d.period asc) d;
--One of the variables are converted in order to join with the period
Левое внешнее соединение:
SELECT t.idemp, t.period, t.nameemp, d.nameboss
FROM dbo.employeePermit AS T LEFT OUTER JOIN
dbo.bossDot AS D ON D.period= CONVERT(nvarchar(6), T.ORIGINAL_INI, 112) AND D.IDemp = T.IDemp
--One of the variables are converted in order to join with the period
Я даже не знаю, нахожусь ли я на правильном пути, поэтому любая помощь по запросу или подходу приветствуется.