SSRS多轴图表问题

时间:2016-06-16 00:11:37

标签: sql-server reporting-services ssrs-2008-r2

我想知道是否有人可以帮助我解决这个问题,我现在已经玩了至少10个小时了。我将使用来自wiseowl的Movies数据库来说明这一点。

我有以下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条线路,有没有办法在一条线路上获得所有线路的平均值,而不是每条线路的一条线路,因此输出只有一条线路显示平均。

如果有人可以提供帮助,我会非常感激,因为我花了无数个小时。您需要的任何其他信息都告诉我。

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:1)

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

我不知道您的表的结构,因此我建议您在数据集中添加另一个字段:

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

这将添加格式为YYYYMM

的字段

将其添加到轴上的图表中,而不是年份和月份。

在“图表数据”窗口中,单击新创建的“年度类别组”旁边的下拉列表。选择“图表组属性”,然后复制名称。 (应该称之为 - Chart1_CategoryGroup)

最后一步是修改图表中胶片运行时间的表达式。

单击FilmRunTimeMinutes旁边的下拉列表,然后单击Series Properties。

在值字段中,使用以下内容:

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

将Chart1_CategoryGroup1替换为您的类别组。