Преобразование строк 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 имеет неизвестное число строк.

Могу ли я получить выходные данные, как показано ниже, с помощью запроса? Мне нужно, чтобы даты в одном месяце были столбцами, а значения столбцов даты будут значениями в столбце состояния. Количество записей дат на одного студента совпадает с количеством дат в файле attendanceDate, то есть неизвестный.

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

И т. д. Это для создания отчета, поэтому мне нужно сделать это в запросе. Пожалуйста, помогите, если можете.

3 3

3 ответа:

Можно использовать PIVOT. Взгляните на Эту статью.

Возможно, что-то с использованием SQL 2005 PIVOT clause ? (см. также: msdn )

Используйте матричный элемент управления в отчете (или перекрестную таблицу в отчете доступа, или эквивалент в клиентском средстве)

SQL-это фиксированный язык определения столбцов / контрактов, и вы не знаете, как могут возникнуть столбцы. На самом деле это не проблема SQL, а проблема презентации.

Если вы не используете динамический SQL PIVOT... не команда SQL Server 2005+ PIVOT, которая снова фиксируется, известные столбцы