Наконец-то я нашел решение, основанное на предыдущих ошибках
create view attendance1 as(
select attendance.*,
case when hour="p1" then status end as p1,
case when hour="p2" then status end as p2,
case when hour="p3" then status end as p3,
case when hour="p4" then status end as p4,
case when hour="p5" then status end as p5,
case when hour="p6" then status end as p6,
case when hour="p7" then status end as p7,
case when hour="p8" then status end as p8
from attendance);
mysql> select * from attendance1;
+------+------+------+------+------------+------+-------+---------+---------+---------+------+------+------+------+------+------+
| sid | cid | ttid | did | date | hour | stuid | status | p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 |
+------+------+------+------+------------+------+-------+---------+---------+---------+------+------+------+------+------+------+
| 2 | 13 | 4 | 3 | 2020-04-22 | p1 | 16 | present | present | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 13 | 4 | 3 | 2020-04-22 | p1 | 17 | absent | absent | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 13 | 4 | 3 | 2020-04-22 | p1 | 18 | present | present | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 13 | 4 | 3 | 2020-04-22 | p1 | 19 | absent | absent | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 13 | 4 | 3 | 2020-04-22 | p1 | 20 | present | present | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 13 | 4 | 3 | 2020-04-22 | p1 | 15 | absent | absent | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 13 | 4 | 3 | 2020-04-22 | p2 | 16 | absent | NULL | absent | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 13 | 4 | 3 | 2020-04-22 | p2 | 17 | present | NULL | present | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 13 | 4 | 3 | 2020-04-22 | p2 | 18 | absent | NULL | absent | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 13 | 4 | 3 | 2020-04-22 | p2 | 19 | present | NULL | present | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 13 | 4 | 3 | 2020-04-22 | p2 | 20 | absent | NULL | absent | NULL | NULL | NULL | NULL | NULL | NULL |
| 2 | 13 | 4 | 3 | 2020-04-22 | p2 | 15 | present | NULL | present | NULL | NULL | NULL | NULL | NULL | NULL |
+------+------+------+------+------------+------+-------+---------+---------+---------+------+------+------+------+------+------+
12 rows in set (0.00 sec)
На основании первого просмотра я создам второе представление
mysql>
create view attendance2 as(
select stuid,
max(p1)as p1,
max(p2)as p2,
max(p3)as p3,
max(p4)as p4,
max(p5)as p5,
max(p6)as p6,
max(p7)as p7,
max(p8)as p8
from attendance1
group by stuid);
mysql> select * from attendance2;
+-------+---------+---------+------+------+------+------+------+------+
| stuid | p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 |
+-------+---------+---------+------+------+------+------+------+------+
| 15 | absent | present | NULL | NULL | NULL | NULL | NULL | NULL |
| 16 | present | absent | NULL | NULL | NULL | NULL | NULL | NULL |
| 17 | absent | present | NULL | NULL | NULL | NULL | NULL | NULL |
| 18 | present | absent | NULL | NULL | NULL | NULL | NULL | NULL |
| 19 | absent | present | NULL | NULL | NULL | NULL | NULL | NULL |
| 20 | present | absent | NULL | NULL | NULL | NULL | NULL | NULL |
+-------+---------+---------+------+------+------+------+------+------+
6 rows in set (0.00 sec)
Спасибо за предыдущие вопросы, на которые ответил человек.