2017-05-18 34 views
0

我需要将此DataSet结果转换为以下图表。 一直试图为价值,组,系列的各种组合,但我无法弄清楚!请有人协助请!在此先感谢带条和线的SSRS报告

SQL数据集 SQL Dataset

图我需要创建 Chart I need to create

回答

0

我不知道这是否是但得到的图表数据我会逆转置的最佳方式您的数据并在数据集中创建两列。以下是一些示例代码,可以将您所示的数据集变得更容易处理。

-- CREATE A Month NUmber table 
-- Create this as a physical table, I'm doing this as a Table variable for this exmaple only 
-- CREATE TABLE dbo.Months (Month_Name varchar(3), Month_Number int) 
DECLARE @Month TABLE(Month_Name varchar(3), Month_Number int) 

INSERT INTO @Month VALUES 
('Jan', 1), ('Feb', 2), ('Mar', 3), ('Apr', 4), ('May', 5), ('Jun', 6), 
('Jul', 7), ('Aug', 8), ('Sep', 9), ('Oct', 10), ('Nov', 11), ('Dec', 12) 

-- CREATE and populate dummy table 
DECLARE @t table (FranchiseNumber int, Report_Year int, Jan int, Feb int, Mar int, Apr int, May int, Jun int, Jul int, Aug int, Sep int, Oct int, Nov int, Dec int) 

INSERT INTO @t Values 
(103332, 2016, 578,591,616,611,611,577, NULL, NULL, NULL, NULL, NULL, NULL), 
(103332, 2017, 343,332,324,310,309, NULL, NULL, NULL, NULL, NULL, NULL, NULL) 

DECLARE @d TABLE(FranchiseNumber int, Month_Name varchar(3), Previous_Year int, Current_Year int) 

-- unpivot, create prev and current year columns and add a month number to help sort the Axis 
INSERT INTO @d 
select 
    FranchiseNumber 
     , Month_Name 
     --, DATEPART(MM, Month_Name + ' 01 1999') AS Month_Number -- REMOVED 
     , SUM(CASE Report_Year WHEN 2016 THEN Month_Value ELSE NULL END) AS Previous_Year 
     , SUM(CASE Report_Year WHEN 2017 THEN Month_Value ELSE NULL END) AS Current_Year 
    from 
     @t p 
    UNPIVOT 
     (Month_Value FOR 
      Month_Name IN (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec) 
     ) as unPiv 
    GROUP BY FranchiseNumber, Month_Name, DATEPART(MM, Month_Name + ' 01 1999') 

SELECT d.FranchiseNumber, m.Month_Name, m.Month_Number, d.Previous_Year, d.Current_Year 
    FROM @Month m 
    LEFT JOIN @d d ON m.Month_Name = d.Month_Name 

这给了我们以下输出。 enter image description here

图表设计看起来像这样。

enter image description here

我所做的只是创造一个线图阻力当前和上年列入值区域,单击值区域Previous_Year下拉菜单,更改图表类型列。

后,我右键单击在水平轴上,并通过MONTH_NUMBER分类

更新:你可能会需要右键单击水平轴,选择属性,然后更改间隔1或不是所有的一个月标签可能会显示。

这并不完美,但它应该让你接近。

要生成下面的表格,请添加一个新的数据集,指向您的原始数据并添加一个新的指向它的tablix。

希望有所帮助。

+0

这对我来说很好,谢谢,但我有一个数据问题。我需要在结果集1-12中返回12个月,如果没有数据,则为空,所以我的图表总是显示12个月。 – Thomas

+0

我更新了代码。基本上我已经添加了一个月表。在这样的工作中,在数据库中有物理日期表和诸如此类的东西是很有用的。基本上,我采取了大部分我们之前拥有的UNPIVOT,并且将其加入到月份和月份数字表中,以便我们获得图表的全套数据。 –

+0

如果以上解决了您的初始问题,请将答案标记为已接受。 –