2016-06-16 175 views
1

我想知道是否有人可以帮我解决这个问题,至少在玩了10个小时之后我已经有了这个问题。我将使用来自wiseowl的电影数据库来说明这一点。SSRS多轴图表问题

我有以下SQL:

SELECT FilmReleaseDate 
    ,FilmName 
    ,directorname 
    ,FilmRunTimeMinutes 
    ,directorgender 
    ,CountryName 
    ,datename(M, FilmReleaseDate) AS [month] 
    ,month(FilmReleaseDate) AS [month_no] 
    ,year(FilmReleaseDate) AS [Year] 
FROM tblFilm 
INNER JOIN tblDirector ON directorID = FilmDirectorID 
INNER JOIN tblCountry ON FilmCountryID = CountryID 
WHERE FilmReleaseDate >= '2006-01-01' 

现在说我希望把与每个国家的电影堆积图此,第二轴将显示薄膜的运行分钟。但这里的问题是我想要所有国家的平均水平,而不是每个国家。有没有办法做到这一点,所以我有1行而不是3行。

Line graph on a stack bar as multi axis DESIGN VIEW 这里是出把看起来像

Preview Mode

,你可以从输出看到有3行的3个国家的结果,有没有一种方式来获得的平均他们都在一行而不是每一行,所以输出将只有一行显示平均值。

如果任何人都可以帮助,我会非常感激,因为我已经花了数不清的时间。任何其他信息,你需要让我知道。

回答

1

试试这个脚本。然后在图表上使用新字段D.AVGFilmRunTimeMinutes。我在脚本的每个表上添加了别名。如果他们指向错误的表格,请纠正别名。

SELECT A.FilmReleaseDate 
     ,A.FilmName 
     ,B.directorname 
     ,D.AVGFilmRunTimeMinutes 
     ,B.directorgender 
     ,C.CountryName 
     ,datename(M, A.FilmReleaseDate) AS [month] 
     ,month(A.FilmReleaseDate) AS [month_no] 
     ,year(A.FilmReleaseDate) AS [Year] 
    FROM tblFilm A 
    INNER JOIN tblDirector B ON directorID = A.FilmDirectorID 
    INNER JOIN tblCountry C ON A.FilmCountryID = B.CountryID 
    LEFT JOIN (SELECT AVG(FilmRunTimeMinutes) AS AVGFilmRunTimeMinutes,FilmDirectorID FROM tblFilm GROUP BY FilmDirectorID) D 
       ON D.FilmDirectorID = A.FilmDirectorID 
    WHERE A.FilmReleaseDate >= '2006-01-01' 
+0

嗨Aldrin,谢谢你的回应,但它似乎仍然为每个国家带回一条线。有没有什么办法只用一行就可以用表达式或其他方式显示这一点? – abs786123

+0

大家好,还是没有喜欢这个,任何人有一个想法或可能指向我正确的方向,我已经穷尽所有选项:( – abs786123

1

您的图表生成3行而不是1的原因是由于您在每个月的图表中分组(由多少个国家/地区决定)。

我不知道你的表的结构,所以我会建议增加其他领域的数据集:

YEAR(A.FilmReleaseDate) * 100 + MONTH(A.FilmReleaseDate) AS [YearMonth] 

这将添加一个字段的格式YYYYMM

添加到您的图表在你的轴上,而不是year和month_no。

在图表数据窗口中,单击新创建的年份类别组旁边的下拉菜单。选择图表组属性,并复制名称。 (它应该被称为 - Chart1_CategoryGroup)

最后一步是在图表中修改电影运行时间的表达式。

单击FilmRunTimeMinutes旁边的下拉列表,然后单击系列属性。

在值字段使用以下命令:

=Avg(Fields!FilmRunTimeMinutes.Value,"Chart1_CategoryGroup1") 

与你的类别组被称为更换Chart1_CategoryGroup1。