Несколько значений Y для одного X в строке SSRS \ точечная диаграмма - PullRequest
2 голосов
/ 12 июля 2011

Я посмотрел онлайн, но не нашел нужного мне ответа.

В SSRS 2008 у меня есть набор данных, который возвращает результаты, аналогичные этому:

Category Value
-------- -----
18       35
18       42
26       45
30       50
30       42
40       50

Как видите, значение одной категории (или оси X) (например, 18) может иметь несколько значений ряда (или оси Y) (для 18 это значения 35 и 42). При попытке отобразить это в диаграмме отчета SSRS-2008 я могу отображать только одно значение Y для каждого X - максимальное, минимальное, среднее, первое и т. Д.

Мне нужно отобразить диаграмму, аналогичную this : MyChart http://img34.imageshack.us/img34/3990/chartexk.png. У вас есть идеи, как это реализовать?

Спасибо за любой ответ!

1 Ответ

4 голосов
/ 13 июля 2011

Следование не является идеальным решением.This is more of a hack to achieve the results.Если вы решите использовать его, будьте осторожны с этим подходом.Это может не дать ожидаемых результатов все время.

Поскольку SSRS не различает два значения по одной и той же оси на диаграмме line , вы можете сделать что-то, как показано в следующем примере,В примере используется SSRS 2008 R2, а запрос, используемый в наборе данных отчета, будет работать только с SQL Server 2005 or above.

Пошаговый процесс:

  1. В базе данных SQL Server создайте таблицу с именем dbo.ReportData, используя сценарии, предоставленные в разделе Сценарии SQL .

  2. Заполните таблицу данными какпоказано на скриншоте # 1 .Я использовал данные, представленные в вопросе, но также добавил столбец идентификаторов для поддержания порядка.

  3. Создайте отчет SSRS и создайте набор данных с именем ReportData со следующим запросом: SELECT Category + RANK() OVER(PARTITION BY Category ORDER BY Id) * .0001 AS Fraction, Category, Value FROM dbo.ReportData ORDER BY Id,Смотрите скриншот # 2 .

  4. Приведенный выше запрос к набору данных разбивает строки по столбцу Категория , а затем присваивает ранг внутри каждой категории на основе столбца Id .Это значение рейтинга умножается на .0001, а затем значение в столбце Категория добавляется к этой доле.Этот вычисленный столбец почти дает то же значение, что и Категория, но отличается на одну тысячную доли, сохраняя значения уникальными.См. Снимок экрана # 3 для вывода этого запроса.

  5. В отчете поместите элемент управления Chart типа Line и настройте раздел Chart Data, как показано на скриншоте# 4 .Столбец Fraction , который является вновь рассчитанным столбцом, должен находиться в разделе Category Groups, а столбец Value должен находиться в разделе Values диаграммы.

  6. Щелкните правой кнопкой мыши по оси X и выберите Horizontal Axis Properties... См. Снимок экрана # 5 .

  7. Настройте свойства горизонтальной оси, как показанона скриншоте # 6 .Для раскрывающегося списка Максимум нажмите кнопку Функция (fx) и настройте выражение, как показано на скриншоте # 7 .

  8. Для данных, показанных на скриншоте # 1 , выполнение отчета даст результаты, показанные на скриншоте # 8 .Аналогично диаграмме, приведенной в вопросе.

  9. Давайте переставим строки в таблице, а также добавим еще несколько дополнительных строк, как показано на скриншоте # 9 .

  10. Для данных, показанных на скриншоте # 9 , запрос к набору данных отчета даст результат, показанный на скриншоте # 10 , и выполнение отчета будетвыведите результат, показанный на скриншоте # 11 .

Надеюсь, это поможет.

Сценарии SQL:

CREATE TABLE [dbo].[ReportData](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Category] [int] NOT NULL,
    [Value] [int] NOT NULL,
CONSTRAINT [PK_ReportData] PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY]
GO

Снимок экрана № 1:

1

Снимок экрана № 2:

2

Снимок экрана № 3:

3

Снимок экрана № 4:

4

Снимок экрана № 5:

5

Снимок экрана № 6:

6

Снимок экрана № 7:

7

Снимок экрана № 8:

8

Снимок экрана № 9:

9

Снимок экрана № 10:

10

Скриншот № 11:

11

...