Сводная таблица SQL для отношений «многие ко многим» для использования в SSRS - PullRequest
4 голосов
/ 06 марта 2012

Используя SQL Server 2008, я пытаюсь выяснить, как создать запрос, который возвращает сводную таблицу со стандартным отношением «многие ко многим». Это отношение определяет, какие пользователи принадлежат к каким ролям, и я хочу, чтобы таблица перечисляла имя пользователя вдоль стороны и имена ролей сверху. Конечная цель - получить эти выходные данные в службах отчетов SQL Server, поэтому не имеет значения, генерирует ли SQL-сервер сводные результаты или SSRS генерирует результаты (один метод лучше другого?). Вот моя примерная схема:

Пользователи Таблица:

  • Идентификатор_пользователь
  • UserName

Права Таблица:

  • RightID
  • RightName

Права Члена Таблица:

  • Идентификатор_пользователь
  • RightID

Я хочу следующий вывод в виде отчета в SSRS. Любая помощь приветствуется.

       RightOne   RightTwo   RightThree   RightFour
jdoe       X          X
mjane      X                       X
ssmith                X            X           X

К вашему сведению: Роли могут быть добавлены, поэтому я бы предпочел не указывать имя или счет роли в запросе жестко.

1 Ответ

5 голосов
/ 06 марта 2012

Я не знаю о сводных таблицах, но вы можете достичь этого в SSRS, как показано ниже

Select UserName,
           RightName
From users u INNER JOIN RightMembership rm on rm.UserID = u.UserID
             INNER JOIN Rights r on rm.RightID = r.RightID

Используйте этот запрос в качестве хранимой процедуры или запроса и заказа соответственно и

Создание набора данных и источника данных

Вставить матрицу в отчет

В строках выберите поле UserName Из созданного набора данных В столбцах выберите поле RightName из созданного набора данных. В данных используйте это выражение ниже, тогда вы получите желаемый результат = IIF (Поля! UserName.Value = ничего, ничего, «X») Как данные в матрице

...