一尘不染

SQl行到列的转换

sql

我有一个表ClassAttendance,正在使用MSSQL 2005

studentID    attendanceDate    status
-------------------------------------
*1004          2010-03-17        0
 1005          2010-03-17        1
 1006          2010-03-17        0
 1007          2010-03-17        0
*1004          2010-03-19        0
 1005          2010-03-19        1
 1006          2010-03-19        0
 1007          2010-03-19        0
*1004          2010-03-20        1

如您所见,studentID是一个名为StudentData的表的外键,而AttendedDate的行数未知。

我可以通过使用查询获得如下所示的输出吗?我需要将一个月中的日期作为列,而日期列的值将是状态列中的值。每个studentID的日期记录数与其在AttenceDate中提交的未知日期数相同。

studentID   2010-03-17   2010-03-19   2010-03-20
------------------------------------------------    
1004            0            0            1

等等。这是用于创建报告的,因此我需要在查询中进行。如果可以的话请帮忙。


阅读 170

收藏
2021-05-30

共1个答案

一尘不染

您可以使用PIVOT。看一下这篇文章

2021-05-30