Итак, у меня есть следующие примеры данных (3 таблицы)
У меня есть «основная» таблица драйверов с именем CASE
CASE_ID CASE_NAME CASE_DATE
1 Test1 01-JAN-18
2 Test2 02-JAN-18
3 Test1 p2 03-JAN-18
4 Test2 p2 03-JAN-18
У меня есть rel_table, которая называется CASE_VAL_REL
CASE_VAL_ID CASE_ID VAL_ID CASE_VAL_TYPE
1 1 1 Weight
2 3 2 Height
3 3 3 Age
4 2 4 Weight
5 4 5 Height
6 4 6 Age
И, наконец, у меня есть таблица, которую необходимо присоединить к таблице REL, которая называется VAL
VAL_ID VAL TIMESTAMP PERSON_NAME GENDER
1 150 06-FEB-19 Matt Male
2 62 06-FEB-19 Matt Male
3 25 06-FEB-19 Matt Male
4 100 06-FEB-19 Pauline Female
5 70 06-FEB-19 Pauline Female
6 22 06-FEB-19 Pauline Female
Мне нужнонабор результатов / таблица, которая выглядит следующим образом (к ней нельзя присоединить case_id, так как они открыли два отдельных случая для получения необходимой информации. Вместо этого нам может потребоваться объединение по «составному ключу» некоторых видов. Ниже приведен мойжелаемый набор результатов:
PERSON_NAME GENDER AGE WEIGHT HEIGHT
Matt Male 25 150 62
Pauline Female 22 100 70
Ниже моя попытка, но она не совсем работает, как я хочу (по крайней мере, для большего набора данных)
SELECT MAX(CASE WHEN CASE_VAL_TYPE = 'Weight'
THEN VAL
END) as Weight
, MAX(CASE WHEN CASE_VAL_TYPE = 'Height'
THEN VAL
END) as Height
, MAX(CASE WHEN CASE_VAL_TYPE = 'Age'
THEN VAL
END) as Age
, PERSON_NAME
, GENDER
FROM CASE C
JOIN CASE_VAL_REL CVR on C.CASE_ID = CVR.CASE_ID
JOIN VAL V on CVR.VAL_ID = V.VAL_ID
GROUP BY PERSON_NAME, GENDER;
Заранее спасибо.