【问题标题】:SSRS Graph Axis Label IssuesSSRS 图形轴标签问题
【发布时间】:2014-09-29 20:31:56
【问题描述】:

所以我在 SSRS 2008 R2 中制作了一个图表,无论出于何种原因,轴标签都拒绝显示为日期值,而是显示为它们所代表的月份数(例如,一月显示向上为“1”,二月为“2”,等等)。我弄乱了图表的各种属性,从“轴选项”到“数字”选项卡。不幸的是,到目前为止没有任何效果。对图表仅进行了另一项更改,那就是类别组中的排序,以便图表可以提取不同年份的数据。这是获取图表数据的代码:

SELECT  Year = DATEPART(YEAR, date1),
date1 = DATEPART(MONTH, date1),
sum(qty) as TotalQTY 
FROM    TableMain
WHERE   Tablemain.date1 between @startdate and @enddate and Tablemain.fillerparam in(@fillerparam) and Tablemain.filler2 in (@filler2)
GROUP BY DATEPART(MONTH, date1), DATEPART(YEAR, date1)

谢谢。

【问题讨论】:

    标签: reporting-services ssrs-2008-r2 axis-labels graphing


    【解决方案1】:

    您的查询可以更改为包含月份的名称。绑定图表时可以使用名称而不是数字,这样轴就可以显示月份名称而不是月份数字。

    下面是如何获取月份名称的示例:

    SELECT  Year = DATEPART(YEAR, date1),
    date1 = DATEPART(MONTH, date1),
    SUM(qty) as TotalQTY,
    CASE -- Case statement translates the integer of the month into the name of the month
        WHEN DATEPART(MONTH, date1) = 1 THEN 'January'
        WHEN DATEPART(MONTH, date1) = 2 THEN 'February'
        WHEN DATEPART(MONTH, date1) = 3 THEN 'March'
        WHEN DATEPART(MONTH, date1) = 4 THEN 'April'
        WHEN DATEPART(MONTH, date1) = 5 THEN 'May'
        WHEN DATEPART(MONTH, date1) = 6 THEN 'June'
        WHEN DATEPART(MONTH, date1) = 7 THEN 'July'
        WHEN DATEPART(MONTH, date1) = 8 THEN 'August'
        WHEN DATEPART(MONTH, date1) = 9 THEN 'September'
        WHEN DATEPART(MONTH, date1) = 10 THEN 'October'
        WHEN DATEPART(MONTH, date1) = 11 THEN 'November'
        WHEN DATEPART(MONTH, date1) = 12 THEN 'December'
        ELSE ''
    END AS 'name_of_month'
    FROM    TableMain
    WHERE   Tablemain.date1 between @startdate and @enddate and Tablemain.fillerparam in(@fillerparam) and Tablemain.filler2 in (@filler2)
    GROUP BY DATEPART(MONTH, date1), DATEPART(YEAR, date1),
    CASE  -- Add the case statement to the GroupBy so that it still groups as expected
        WHEN DATEPART(MONTH, date1) = 1 THEN 'January'
        WHEN DATEPART(MONTH, date1) = 2 THEN 'February'
        WHEN DATEPART(MONTH, date1) = 3 THEN 'March'
        WHEN DATEPART(MONTH, date1) = 4 THEN 'April'
        WHEN DATEPART(MONTH, date1) = 5 THEN 'May'
        WHEN DATEPART(MONTH, date1) = 6 THEN 'June'
        WHEN DATEPART(MONTH, date1) = 7 THEN 'July'
        WHEN DATEPART(MONTH, date1) = 8 THEN 'August'
        WHEN DATEPART(MONTH, date1) = 9 THEN 'September'
        WHEN DATEPART(MONTH, date1) = 10 THEN 'October'
        WHEN DATEPART(MONTH, date1) = 11 THEN 'November'
        WHEN DATEPART(MONTH, date1) = 12 THEN 'December'
        ELSE ''
    END
        ORDER BY date1 -- Added order by to make sure that records are sorted in the report by date and not by alphabetic name of month
    

    您还可以查看这篇文章,了解不使用 case 语句获取月份名称的方法:Convert Month Number to Month Name Function in SQL

    【讨论】:

    • 谢谢!没想过用case。唯一出现问题的部分是第二个 CASE 之后的 AS 'name_of_month',但除此之外,它完美无缺。
    • 该示例已更新为从第二个CASE 中删除AS 'name_of_month'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    相关资源
    最近更新 更多