Как получить значения строк в виде столбцов, используя оператор Sql Query CASE - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть таблица

s_id   student_name attendance_date status
1        student1     2020-01-01     P
2        student1     2020-01-02     P
3        student2     2020-01-01     P
4        student2     2020-01-02     A

Мне нужна моя таблица как

s_id    student_name   01-01-2020   02-01-2020
1       student1       P             P
2       student2       P             A

Я пытался использовать оператор CASE WHEN, но имена учеников повторяются. Как я могу получить результат, не повторяя фамилии студента?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Чтобы развернуть фиксированный список дат, вы можете выполнить условное агрегирование:

select
    s_id, 
    student_name,
    max(case when attendance_date = '2020-01-01' then status end) `2020-01-01`,
    max(case when attendance_date = '2020-01-02' then status end) `2020-01-02`
from mytable
group by s_id, student_name
order by s_id
0 голосов
/ 23 апреля 2020

попробуйте следующее, вот DEMO . Я не включил s_id, поскольку здесь нет смысла включать его.

select
    student_name,
    max(case when attendance_date='2020-01-01' then status end) as '01-01-2020',
    max(case when attendance_date='2020-01-02' then status end) as '01-02-2020'
from yourTable
group by
    student_name
...