mysql - 类(class)考勤记录格式SQL查询

标签 mysql sql

<分区>

Possible Duplicate:
MySQL dynamic cross tab

我有学生记录表

-------------------------------------------------------------------
student_id | semester    | schoolyear| name  | section |
-------------------------------------------------------------------
1          | 1st Semester| 2011-2012 | john  | c21     |
2          | 1st Semester| 2011-2012 | eric  | c21     |
3          | 1st Semester| 2011-2012 | mark  | c21     |

和考勤表

-------------------------------------------------------------------
attendance_id | stud_id              | week       | 
-------------------------------------------------------------------
1             | 1                    | 02/04/2012 | 
2             | 2                    | 02/04/2012 | 
3             | 3                    | 02/04/2012 | 
4             | 1                    | 02/11/2012 | 
5             | 2                    | 02/11/2012 | 
6             | 1                    | 02/18/2012 | 
7             | 2                    | 02/18/2012 | 
8             | 3                    | 02/18/2012 | 

我想使用 sql 实现此输出。

-------------------------------------------------------------------
student_id | name    | 02/04/2012 | 02/11/2012  | 02/18/2012 |
-------------------------------------------------------------------
1          | john    | present    | present    | present     |
2          | erik    | present    | absent     | present     |
3          | mark    | present    | present    | present     |

这对我来说很模糊,有人可以帮忙吗? 我试过了,但没用。

Select week,
[02/28/2012],
[02/29/2012]
From attendance
group by student_id

最佳答案

无论您使用何种数据库,您要实现的概念都称为“数据透视表”。

这是一个 mysql 的例子: http://en.wikibooks.org/wiki/MySQL/Pivot_table

一些数据库具有内置的功能,请参阅下面的链接。

SQL服务器: http://msdn.microsoft.com/de-de/library/ms177410.aspx

甲骨文: http://www.dba-oracle.com/t_pivot_examples.htm

您始终可以手动创建枢轴。只需选择结果集中的所有聚合,然后从该结果集中进行选择。

同时检查这个 link ,您将得到 MGA 提供的答案...

关于mysql - 类(class)考勤记录格式SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287413/

相关文章:

php - 如何使用 CASE 加 JOIN 加 GROUP BY 到单个 MySQL 语句中

MySQL 查询 - 基于对象属性到技能映射的对象队列

mysql - 在 SQL 中选择/转换输出为整数

sql - 在 Postgresql 中使用 group by 子句和多个内部联接选择查询

php - SQL 查询不打印 varchar/text 列

php - 选择时获取重复记录

php - 缺少一些东西,不知道是什么

php - 如何正确转义 mysql "search/like"查询?

sql - 如何在维护小结果集的同时从 SQL 填充对象的列表属性?

sql - 跨越午夜的分割时间记录