Вот сценарий: у меня есть таблица, в которой записаны user_id, module_id и дата/время просмотра модуля.
eg.
Table: Log
------------------------------
User_ID Module_ID Date
------------------------------
1 red 2001-01-01
1 green 2001-01-02
1 blue 2001-01-03
2 green 2001-01-04
2 blue 2001-01-05
1 red 2001-01-06
1 blue 2001-01-07
3 blue 2001-01-08
3 green 2001-01-09
3 red 2001-01-10
3 green 2001-01-11
4 white 2001-01-12
Мне нужно получить набор результатов, который имеет user_id в качестве 1-го столбца, а затем столбец для каждого модуля. Затем данные строки представляют собой user_id и количество раз, когда пользователь просматривал каждый модуль.
eg.
---------------------------------
User_ID red green blue white
---------------------------------
1 2 1 2 0
2 0 1 1 0
3 1 2 1 0
4 0 0 0 1
Сначала я думал, что смогу сделать это с помощью PIVOT, но без кубиков; база данных представляет собой преобразованную базу данных SQL Server 2000, работающую в SQL Server 2005. Я не могу изменить уровень совместимости, поэтому свод отсутствует.
Другая проблема заключается в том, что модули будут различаться, и невозможно переписывать запрос каждый раз, когда модуль добавляется или удаляется. Это означает, что я не могу жестко запрограммировать модули, потому что заранее не знаю, какие из них будут установлены, а какие нет.
Как я могу это сделать?