Динамическая сводная таблица для статуса в определенные дни в SQL

Я видел, как это делалось, но пытался объединить все в одном. Создание одной выходной таблицы из двух отдельных.

tblMeetingTime one
-----------------
MeetingID   GroupID    MeetingTime
1           21          11/5/2011 8:30
2           21          11/9/2011 14:30
3           21          11/15/2011 8:30
4           23          11/5/2011 13:00
.           .           .
.           .           .

tblPeople
------------------------
GroupID     PersonID
21          3463  
21          3563
23          3245
.           .

tblRecordAttendance
--------------------------------
MeetingID    PeronID      Status
1            3463         A
1            3563         NULL
2            3463         N
2            3563         N
.            .            .

При необходимости я могу переделать некоторые таблицы, но так поступают необработанные данные. Я надеюсь получить что-то вроде

 Person     11/5/2011 8:30 AM      11/9/2011 2:30 PM      ...      
 --------------------------------------------------- 
 3463        A                      N
 3563                               N
 .
 .
 .

У меня есть хорошая идея о том, как сделать это в простом C#, но потребуется много времени для открытия, перерасчета и организации данных и в надежде придумать какой-нибудь SQL Pivot, чтобы сделать все это, особенно с появлением нового MeetingTimes. добавлено для каждой группы.

Спасибо,

брод

1 ответ

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

Я бы предложил использовать службы отчетов SQL Server. Вы можете использовать элемент управления ReportViewer в режиме только клиента и даже не требовать установки компонентов сервера. Затем вы можете создать матричный отчет, который рассчитает, что вам нужно.

http://msdn.microsoft.com/en-us/library/ms251671.aspx

Не позволяйте MSDN отпугнуть вас. Это на самом деле так же просто, как установить элемент управления на свой компьютер (и веб-сервер); Visual Studio будет иметь подключаемый модуль конструктора отчетов, который открывается всякий раз, когда вы открываете файл RDLC. Он также добавляет параметр "Отчет" в меню "Добавить новый...".

Вы также можете сделать это вручную в C#. Вам не нужно повторно запрашивать. Независимо от того, используете ли вы элемент управления ReportViewer или делаете это самостоятельно, вы просто извлекаете список из процедуры как большой стек строк о человеке / собрании. Если вы используете.NET 4, то LINQ to Objects сделает его простым для обработки на простом C# при создании HTML-таблицы.

Другие вопросы по тегам