2015-11-11 2 views
2

Я новичок в этом форуме, но мне нравится спрашивать о графике в службах Reporting Services, который я тоже совершенно новый.SSRS Charts Query and Data Series

Я хочу создать серию данных диаграммы, которая называется Месяцами, отображающими данные с апреля по март. Однако данные в таблицах и запросе устанавливают нас следующим образом, не имея monthname; возвращает поля данных; Ref, Year, Month1datavalue, Month2datavalue, Month3datavalue.... Month12datavalue.

запроса, как показано ниже:

SELECT  ChartData.Year, ChartData.Month1, ChartData.Month2, ChartData.Month3, ChartData.Month4, ChartData.Month5, ChartData.Month6, ChartData.Month7, 
         ChartData.Month8, ChartData.Month9, ChartData.Month11, ChartData.Month10, ChartData.Month12, ChartData.SeriesName, ChartData.ColorName, ChartData.Style, 
         Performance.ReferenceNo, Performance.ShortName, Performance.FullName, Performance.Description, Performance.Active, Performance.Deleted 
FROM   ChartData INNER JOIN 
         Performance ON ChartData.PerformanceID = Performance.PerformanceID 
WHERE  (ChartData.Year = 2015) 

создать диаграмму, но month1data появляется в виде отдельной серии к month2data. В идеале я хотел бы, чтобы поля month1data,month2data,month3data были как одна серия, которая могла показывать имена месяцев в заголовке горизонтальной оси.

Любые идеи для начинающих?

Благодаря

+0

Можете ли вы опубликовать изображение того, как оно выглядит прямо сейчас? –

+1

Поделитесь своим запросом, чтобы помочь вам развернуть набор данных и получить правильное расположение данных. –

ответ

1

На основании вашего запроса и ваших requeriments вывешенных в вопросе, я воссоздал свой сценарий с образцами данных.

Обновление: Я обновил запрос, чтобы вернуть месяц номера года. Это позволит вам указать имя месяца по оси x.

Попробуйте это:

With pivot_cte as 
(
SELECT 
    ChartData.[Year],ChartData.Month1, ChartData.Month2, ChartData.Month3, ChartData.Month4, 
    ChartData.Month5, ChartData.Month6, ChartData.Month7, ChartData.Month8, ChartData.Month9, 
    ChartData.Month11, ChartData.Month10, ChartData.Month12, ChartData.SeriesName, 
    ChartData.ColorName, ChartData.Style, Performance.ReferenceNo, Performance.ShortName, 
    Performance.FullName, Performance.Description, Performance.Active, Performance.Deleted 
FROM 
    ChartData INNER JOIN Performance ON ChartData.PerformanceID = Performance.PerformanceID 
WHERE 
    (ChartData.Year = 2015) 
) 
select 
    [Year], 
    SeriesName, 
    ColorName, 
    Style, 
    ReferenceNo, 
    ShortName, 
    FullName, 
    [Description], 
    Active, 
    Deleted, 
    ROW_NUMBER() OVER (ORDER BY (SELECT 0)) [Month], --New line added in UPDATE 
    Value 
from 
    (select * from pivot_cte) p 
UNPIVOT 
    (Value FOR [Values] in 
    (Month1,Month2,Month3,Month4,Month5,Month6,Month7,Month8,Month9,Month10,Month11,Month12) 
    ) as unpivot_dt; 

Это даст вам столбцы в качестве строк и позволяют создать только одну Серию данных. Также он вернет столбец Month, чтобы поместить имя месяца по оси x.

Запустите updated скрипку с примером данных только с целью демонстрации и обратите внимание на структуру данных, необходимую для вашей диаграммы.

С данными, выставленными в скрипке, я создал эту диаграмму. с Value Поле в серии и Month в категориях групп.

enter image description here

В категории Gropus правой кнопкой мыши на Month поле, перейдите Category Groups properties и поставить следующее выражение для Label.

=Choose(Fields!Month.Value, 
"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" 
) 

enter image description here

Это будет просмотреть следующую таблицу.

enter image description here

Если вы хотите, чтобы показать только апреля и мая фильтр набора данных, щелкните правой кнопкой мыши на наборе данных и перейти к свойствам, в свойства перейдите на вкладку filter и нажмите кнопку Добавить.

enter image description here

В выражении 1 положить это выражение:

=CStr(Fields!Month.Value) 

Для выражения 2 поставить это одно:

=Split("4,5",",") 

Примечание я поставил 4 для Apr и 5 для May, поэтому, если вам нужно показать Oct, Nov и Dec вы должны поставить =Split("10,11,12",",")

с фильтром график покажет Apr и May.

enter image description here

Позвольте мне знать, если это может помочь вам.

+0

Спасибо alejandro большую помощь, но один вопрос, как вы создали значения месяца на горизонтальной оси? 1 ~ 12? поскольку запрос возвращает данные в правильной компоновке, но без месячных меток как таковых. – wodz

+0

Могу ли я заказать и пометить это в sql, поскольку значение Month1data будет равно Apr, значение Month2data будет равно May. – wodz

+0

@wodz, проверьте обновление моего ответа. –