可能重复:
MySQL dynamic cross tab
我有student_record表
-------------------------------------------------------------------
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
答案 0 :(得分:0)
无论您使用何种数据库,您尝试实现的概念都称为“数据透视表”。
这是mysql的一个例子: http://en.wikibooks.org/wiki/MySQL/Pivot_table
有些数据库具有内置功能,请参阅下面的链接。
SQLServer的: http://msdn.microsoft.com/de-de/library/ms177410.aspx
甲骨文: http://www.dba-oracle.com/t_pivot_examples.htm
您始终可以手动创建枢轴。只需选择结果集中的所有聚合,然后从该结果集中进行选择。
同时查看此link,您将得到MGA提供的答案......