Преобразование строк 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 ответа:
Можно использовать PIVOT. Взгляните на Эту статью.
Возможно, что-то с использованием SQL 2005 PIVOT clause ? (см. также: msdn )
Используйте матричный элемент управления в отчете (или перекрестную таблицу в отчете доступа, или эквивалент в клиентском средстве)
SQL-это фиксированный язык определения столбцов / контрактов, и вы не знаете, как могут возникнуть столбцы. На самом деле это не проблема SQL, а проблема презентации.
Если вы не используете динамический SQL PIVOT... не команда SQL Server 2005+ PIVOT, которая снова фиксируется, известные столбцы