Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите создать cross-tab отчет  [new]
johnny..
Member

Откуда:
Сообщений: 5
Нужно создать запрос (или процедуру) в MS SQL Server 2005, принимающий в качестве параметров номер группы и выводящий отчет такого вида:
по строчкам - фамилии студентов из группы, колонки - даты проведенных занятий, на пересечении отметка о присутствии (0, 1)
то есть вот так:

имя_студента        |  дата_проведенного_занятия1 | дата_проведенного_занятияN
Джеки Чан 1 1
Дункан Маклауд 0 1
СтудентN 1 1
данные хранятся в таблице в таком вот виде:

Джеки Чан	        2009-07-08 00:00:00.000	        1
Дункан Маклауд 2009-07-08 00:00:00.000 0
СтудентN 2009-07-08 00:00:00.000 1
Джеки Чан 2009-07-09 00:00:00.000 1
Дункан Маклауд 2009-07-09 00:00:00.000 1
СтудентN 2009-07-09 00:00:00.000 1

сложность в том, что количество занятий не известно, и надо как то ловить новые даты, помещая их в новые столбцы. подскажите, как это можно сделать?
заранее благодарен!
13 июл 09, 11:24    [7407351]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать cross-tab отчет  [new]
BugsBunny#
Guest
попроще будет в MS Reporting Service сделать отчет вида matrix.
Как раз для этих целей матрица предназначена.
13 июл 09, 14:05    [7408509]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать cross-tab отчет  [new]
pacha
Member

Откуда:
Сообщений: 239
johnny..

сложность в том, что количество занятий не известно, и надо как то ловить новые даты, помещая их в новые столбцы. подскажите, как это можно сделать?
заранее благодарен!

Динамический запрос с pivot может сгенерить?
13 июл 09, 14:32    [7408735]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать cross-tab отчет  [new]
Борис Бритва
Member

Откуда: Киев
Сообщений: 127
в результате запроса возвращать Pivot Table - это извращение, покруче чем зубной счеткой драять унитазы.

Я так понимаю это нужно для отчета, а отчет оформляется уже в Report Studio.

Если обьемы данных маленькие - то можно в Excel выгружать...

Если вообще все правильно то Use SSAS/Cognos/MicroStrategy/Hyperion

Для начала скажите зачем вам нужен такой набор данных?
13 июл 09, 18:51    [7410545]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать cross-tab отчет  [new]
johnny..
Member

Откуда:
Сообщений: 5
благодарю всех ответивших!

Борис Бритва

Для начала скажите зачем вам нужен такой набор данных?


есть две таблицы.
первая - для записи проведенных занятий (Lesson)
вторая - для отметки присутствия студентов (GoodStudents)
структура:

Lesson (
lesson_id int, // номер проведенного занятия
disc_id int, // номер дисциплины
group_id int, // номер группы с которой провели занятие
lesson_date datetime // дата проведения занятия
)

GoodStudents (
lesson_id int, // номер проведенного занятия из предыдущей таблицы
student_id int, //номер студента из таблицы студенты
status bit // отметка о присутствии
)

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


Борис Бритва

Если вообще все правильно то Use SSAS/Cognos/MicroStrategy/Hyperion

если уж делать, то правильно. где можно подробнее почитать? слова такие первый раз слышу...и даже догадаться не могу что они могут значить.
щас Report Studio посмотрю, завтра буду гугл по этим словам непонятным мучить.

еще раз спасибо всем откликнувшимся!
13 июл 09, 23:59    [7411197]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать cross-tab отчет  [new]
Борис Бритва
Member

Откуда: Киев
Сообщений: 127
johnny..,

Задачу понял. Это запросом SQL не делается

Сделайте VIEW с полями:
1) номер_группы
2) имя_студента
3) дата_проведенного_занятия
4) название_дисциплины
5) отметка_о_присутствии

A) можно настроить в интерфейсе программы выгрузку сразу в Excel
Б) можно сделать отчет в Crystal Reports

это зависит от:
1) Какое у Вас СУБД?
2) Если это не коммерческий проэкт (или экономный), проще выгружать данные в Excel и строить там отчет в виде сводной таблицы.
14 июл 09, 10:17    [7411841]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать cross-tab отчет  [new]
johnny..
Member

Откуда:
Сообщений: 5
Борис Бритва
johnny..,
1) Какое у Вас СУБД?
2) Если это не коммерческий проэкт (или экономный), проще выгружать данные в Excel и строить там отчет в виде сводной таблицы.


СУБД - MS SQL Server Management Studio version 9.00.4035.00 (2005)
Это не комерческий проект, данные нужно выгружать в веб интерфейс (откуда собственно и вносяться изменения в статусы студентов, веб пишется в Visual Studio на C#). Возможность выгрузки данные так же в Excel будет весьма приятной фичей.

Борис Бритва

Сделайте VIEW с полями:
1) номер_группы
2) имя_студента
3) дата_проведенного_занятия
4) название_дисциплины
5) отметка_о_присутствии

возможно сделать VIEW с динамически изменяемым названием столбцов?
то есть результат имел бы вот такой вид (см аттач)

Борис Бритва

Б) можно сделать отчет в Crystal Reports

это средствами MS SQL?

К сообщению приложен файл. Размер - 0Kb
14 июл 09, 11:33    [7412355]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать cross-tab отчет  [new]
Борис Бритва
Member

Откуда: Киев
Сообщений: 127
johnny..,

не надо делать VIEW c динамическими столбцами =)

выгружаете в обычный список, а потом на уровне Excel создаете сводную таблицу, можно руками создавать а можно макросом.

тогда она получится у Вас в таком виде как вы показали, и можно будет просматривать данные в разныъх разрезах.

см. вложение
14 июл 09, 12:29    [7412720]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать cross-tab отчет  [new]
Борис Бритва
Member

Откуда: Киев
Сообщений: 127
johnny..
это средствами MS SQL?

нет, это отдельная система. См. раздел Системы отчетности.
14 июл 09, 12:38    [7412770]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить