Вывод в SELECT кастомных записей из двух таблиц
Таблица t_pers
id | name
1 | Вася
2 | Женя
3 | Вова
Таблица t_tests
pers_id | test_id | status_id | status_name |
---------------------------------------------
1 | 002 | 3 | Не пройден |
1 | 002 | 3 | Не пройден |
1 | 002 | 4 | Пройден |
1 | 002 | 4 | Пройден |
1 | 002 | 4 | Пройден |
Есть две таблицы t_pers и t_tests. Необходимо написать запрос, который по id из t_pers выводил бы в select кастомные стобцы с одной строкой, где в первом столбце было бы имя сотрудника, а в последующий столбцах данные по тестам. При этом выводился бы статус "Пройден" если у сотрудника в таблице t_tests есть хотя бы одна строка с status_id=4 или "Не пройден" если у сотрудника нет ни одной строки с status_id=4 или данного сотрудника в таблице t_tests нет
name_pers | first_test | second_test | third_test
-----------------------------------------------------------------
Вася | Не пройден | Пройден | Не пройден
Продолжаю пробовать реализовать через PIVOT. Проблема в том, что с помощью вот такого запроса получаю таблицу с кол-вом строк равным количеству строк из SourceTable, а мне нужна одна строка... помогите, кто может Вот запрос:
SELECT
testName,
[6969151001688955991] AS 'Тест "Кожа и замша козленка. Материаловедение - 4 неделя"',
[6998058936402461757] AS 'Тест по марке LR Lorettini'
FROM
(
SELECT DISTINCT
tl.assessment_id AS testId,
cls.fullname AS fullname,
cls.id AS persId,
tl.assessment_name AS testName
FROM test_learnings tl
JOIN collaborators cls ON cls.id = tl.person_id
WHERE cls.code = 51138 AND tl.state_id = 4
) AS SourceTable
PIVOT
(
COUNT(persId)
FOR testId in ([6969151001688955991], [6998058936402461757])
) AS pvt
