【问题标题】:SSRS multi axis chart issueSSRS 多轴图表问题
【发布时间】:2023-03-13 05:33:01
【问题描述】:

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

我有以下 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 行。

这是输出的样子

正如您从输出中看到的那样,结果中有 3 个国家/地区的 3 行,有没有一种方法可以在一行中获得所有这些国家的平均值,而不是每一个,所以输出将只有一行显示平均。

如果有人可以提供帮助,我将不胜感激,因为我为此花费了无数个小时。如果您需要任何其他信息,请告诉我。

【问题讨论】:

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


    【解决方案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'
    

    【讨论】:

    • 嗨奥尔德林,感谢您的回复,但它似乎仍然为每个国家/地区带来了一条线。有没有什么办法可以让一行使用表达式或其他东西来显示这一点?
    • 大家好,对此仍然不满意,任何人都有想法或可能指出我正确的方向,我已经用尽了所有选择:(
    【解决方案2】:

    您的图表生成 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 替换为您的类别组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多