Следование не является идеальным решением.This is more of a hack to achieve the results
.Если вы решите использовать его, будьте осторожны с этим подходом.Это может не дать ожидаемых результатов все время.
Поскольку SSRS не различает два значения по одной и той же оси на диаграмме line , вы можете сделать что-то, как показано в следующем примере,В примере используется SSRS 2008 R2
, а запрос, используемый в наборе данных отчета, будет работать только с SQL Server 2005 or above
.
Пошаговый процесс:
В базе данных SQL Server создайте таблицу с именем dbo.ReportData
, используя сценарии, предоставленные в разделе Сценарии SQL .
Заполните таблицу данными какпоказано на скриншоте # 1 .Я использовал данные, представленные в вопросе, но также добавил столбец идентификаторов для поддержания порядка.
Создайте отчет SSRS и создайте набор данных с именем ReportData со следующим запросом: SELECT Category + RANK() OVER(PARTITION BY Category ORDER BY Id) * .0001 AS Fraction, Category, Value FROM dbo.ReportData ORDER BY Id
,Смотрите скриншот # 2 .
Приведенный выше запрос к набору данных разбивает строки по столбцу Категория , а затем присваивает ранг внутри каждой категории на основе столбца Id .Это значение рейтинга умножается на .0001, а затем значение в столбце Категория добавляется к этой доле.Этот вычисленный столбец почти дает то же значение, что и Категория, но отличается на одну тысячную доли, сохраняя значения уникальными.См. Снимок экрана # 3 для вывода этого запроса.
В отчете поместите элемент управления Chart типа Line и настройте раздел Chart Data, как показано на скриншоте# 4 .Столбец Fraction , который является вновь рассчитанным столбцом, должен находиться в разделе Category Groups
, а столбец Value должен находиться в разделе Values
диаграммы.
Щелкните правой кнопкой мыши по оси X и выберите Horizontal Axis Properties...
См. Снимок экрана # 5 .
Настройте свойства горизонтальной оси, как показанона скриншоте # 6 .Для раскрывающегося списка Максимум нажмите кнопку Функция (fx) и настройте выражение, как показано на скриншоте # 7 .
Для данных, показанных на скриншоте # 1 , выполнение отчета даст результаты, показанные на скриншоте # 8 .Аналогично диаграмме, приведенной в вопросе.
Давайте переставим строки в таблице, а также добавим еще несколько дополнительных строк, как показано на скриншоте # 9 .
Для данных, показанных на скриншоте # 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:
Снимок экрана № 2:
Снимок экрана № 3:
Снимок экрана № 4:
Снимок экрана № 5:
Снимок экрана № 6:
Снимок экрана № 7:
Снимок экрана № 8:
Снимок экрана № 9:
Снимок экрана № 10:
Скриншот № 11: