Получить MotherTongue и свободное владение языком сотрудника - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть следующий запрос, в результате которого получается язык, на котором говорит сотрудник, и соответствующий ему уровень:

SELECT E.EmployeeId
        ,ISNULL(L.ID ,0) AS LanguageId
        ,L.Label AS Language,
        ll.Label AS LanguageLevel
         FROM Employee e
LEFT JOIN AF_AdminFile aaf ON e.AdminFileId = aaf.AdminFileId
LEFT JOIN AF_Language al ON aaf.AdminFileId = al.AdminFileId
LEFT JOIN Language l ON al.LanguageId = l.ID
LEFT JOIN LanguageLevel ll ON al.LanguageLevelId = ll.LanguageLevelId
ORDER BY e.EmployeeId

Результат выглядит примерно так:

enter image description here

Для сотрудника с EmployeeId = 6 он говорит по-английски / свободно, по-испански / хорошо, по-французски / по-родному.
Зная, что в моей таблице 187 разных языков, язык и 4 уровня языкав моей таблице LanguageLevel (Ярмарка, Свободно, Хорошо, Родной Язык)

Я хочу получить только язык Родной и Свободный, как показано ниже:

EmployeeId MotherTongue        Fluent
6          French              English

1 Ответ

2 голосов
/ 23 сентября 2019

Выходные данные вашего текущего запроса следуют шаблону ненормализованного хранилища значений ключей.В этом случае ключи - это языковые уровни, а значения - языки.Один из способов справиться с этим - агрегировать по сотрудникам, а затем использовать поворотную логику для получения нужных языков.

SELECT
    e.EmployeeId,
    MAX(CASE WHEN ll.label = 'Mother Tongue' THEN l.label END) AS MotherTongue,
    MAX(CASE WHEN ll.label = 'Fluent' THEN l.label END) AS Fluent
FROM Employee e
LEFT JOIN AF_AdminFile aaf
    ON e.AdminFileId = aaf.AdminFileId
LEFT JOIN AF_Language al
    ON aaf.AdminFileId = al.AdminFileId
LEFT JOIN Language l
   ON al.LanguageId = l.ID
LEFT JOIN LanguageLevel ll
   ON al.LanguageLevelId = ll.LanguageLevelId
GROUP BY
    e.EmployeeId
ORDER BY
    e.EmployeeId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...