Оператор SQL In Select показывает значения из одной и той же таблицы, но разных записей - PullRequest
0 голосов
/ 08 июня 2018

У меня есть таблица «Студенты» с двумя столбцами «UserID» и «Имя».

Далее у меня есть таблица «TestResults» с тремя столбцами, UserID, TestID и TestScore.

Я хотел бы выполнить один запрос, который показывает для каждого пользователя в ОДНОЙ строке их оценки теста для тестов, имеющих TestID, равный 1A или 2A.

Какой подход является лучшим, мне интересно, является ли Pivot лучшим способом или есть другой, который более целесообразен.Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Угадывая ваш комментарий, вы можете использовать conditional aggregation с max и case, чтобы получить результаты в одной строке:

select s.userid, s.name, 
    max(case when t.testid = '1a' then t.testscore end) as 1ascore,
    max(case when t.testid = '2a' then t.testscore end) as 2ascore
from students s
    join testresults t on s.userid = t.userid
group by s.userid, s.name
0 голосов
/ 08 июня 2018

Попробуйте это -

SELECT 
   UserID, 
   TestScore 
FROM 
   TestResults 
WHERE 
   (TestID = 1A) 
OR (TESTID = 2A)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...