课堂考勤记录格式SQL查询

时间:2012-02-15 03:19:48

标签: mysql sql

  

可能重复:
  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

1 个答案:

答案 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提供的答案......