Комплексное условие отбора

Задача:

У нас есть ФизЛица у которых есть кадровая история
В кадровой истории хранятся места работы, дата устройства и увольнения и тип трудоустройства
Типов всего 2: "Основное" и "Совмещение"

Нам необходимо получить текущее т.е. где дата увольнения пустая и оно либо основное, либо совмещение
Но так же у нас есть ситуации, с 2-мя текущими местами работы (это 2 записи в таблице для одного физЛица), как правило 1-е Основное и 2-е Совмещение

Всего у нас 3 случая: Основное, Основное и Совмещение (2 записи в таблице) и только Совмещение

В первых 2 случаях нам нужно только основное, а в последнем разумеется берем совмещение

Проблема

У меня не выходит получить только основное трудоустройство во 2-ом случае, он получает 2 записи и получается дубликат, который нам не нужен

По сути условие звучит так: Получать текущее Основное трудоустройство, но если его нету, то Совмещение.
У нас всегда должно быть только одно физлицо с одним трудоустройством

Ниже вырезка из кода с самим условием

  FROM [ELMA3].[dbo].[FizicheskieLica] as fz
  INNER JOIN FizicheskieLica_KadrovayaIst AS kadr ON kadr.Parent = fz.Id 
  AND ((kadr.TipTrudoustroystva = 'Основное') AND (kadr.TipTrudoustroystva <> 'совмещение')) 
  OR ((kadr.TipTrudoustroystva <> 'Основное') AND (kadr.TipTrudoustroystva = 'совмещение'))
  AND (kadr.DataUvoljneniya >= CAST(GETDATE() AS DATE) OR kadr.DataUvoljneniya is null)

Есть идея реализовать XOR, но я не знаю как это сделать и насколько он тут подойдет
Возможно вы знаете как тут можно вы уже сталкивались с подобной ситуацией и знаете подходящие инструменты


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