none
MS SQL Reporting Services Report 报表配置疑问? RRS feed

  • 问题

  • 在一个员工信息表中,我希望用报表统计员工年龄分布.

    比如:18到28区间. 28到38...

    请问类似需求用饼图如何设置

    谢谢.


    Anything is Possible!

    2012年12月3日 1:51

答案

  • 有一个比较简单的做法,就是你Dataset的查询脚本中把圆饼图所要呈现的数据准备好,先把各个区间的数量算出来,接着在SSRS中就可以直接设定即可。


    以上說明若有錯誤請指教,謝謝。

    台灣 SQL PASS 社群 | SQL PASS Taiwan

    歡迎參觀我的BLOG - 積沙成塔


    2012年12月3日 7:33
  • 感谢 TerryChuang.

    由于我第一次做报表,之前思路一直停留在如何设置问题, 原来是在数据源那里做处理.

    刚才写了存储过程, 这样也可以了.

    create PROCEDURE RP_HR 
    @temp int = 10
    AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    declare @min int
    declare @max int
    set @min= (select MIN(age) from [HR].[dbo].[employees])
    set @max= (select max(age) from [HR].[dbo].[employees])
        declare @sql nvarchar(max)
        set @sql=''
    while @min<@max
    begin
    set @sql=@sql+' select 个数=COUNT(*),标题='''+convert(nvarchar,@min)+'到'+CONVERT(nvarchar,@min+@temp)+''' from [HR].[dbo].[employees] where  age between  '+convert(nvarchar,@min)+' and  '+convert(nvarchar,@min+@temp)+' union all'
    set @min=@min+@temp
    end

    set @sql = left(@sql, len(@sql)- 10)+' order by 个数'
    print @sql
    exec(@sql)
    END
    GO

    谢谢台湾的朋友.


    Anything is Possible!


    2012年12月3日 8:27

全部回复

  • 有一个比较简单的做法,就是你Dataset的查询脚本中把圆饼图所要呈现的数据准备好,先把各个区间的数量算出来,接着在SSRS中就可以直接设定即可。


    以上說明若有錯誤請指教,謝謝。

    台灣 SQL PASS 社群 | SQL PASS Taiwan

    歡迎參觀我的BLOG - 積沙成塔


    2012年12月3日 7:33
  • 感谢 TerryChuang.

    由于我第一次做报表,之前思路一直停留在如何设置问题, 原来是在数据源那里做处理.

    刚才写了存储过程, 这样也可以了.

    create PROCEDURE RP_HR 
    @temp int = 10
    AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    declare @min int
    declare @max int
    set @min= (select MIN(age) from [HR].[dbo].[employees])
    set @max= (select max(age) from [HR].[dbo].[employees])
        declare @sql nvarchar(max)
        set @sql=''
    while @min<@max
    begin
    set @sql=@sql+' select 个数=COUNT(*),标题='''+convert(nvarchar,@min)+'到'+CONVERT(nvarchar,@min+@temp)+''' from [HR].[dbo].[employees] where  age between  '+convert(nvarchar,@min)+' and  '+convert(nvarchar,@min+@temp)+' union all'
    set @min=@min+@temp
    end

    set @sql = left(@sql, len(@sql)- 10)+' order by 个数'
    print @sql
    exec(@sql)
    END
    GO

    谢谢台湾的朋友.


    Anything is Possible!


    2012年12月3日 8:27
  • 您客气了,有机会可以多多交流,看到您的问题我直觉想到的是从DataSet那边处理,也许不是最佳的作法,若其他朋友有不同的做法,也欢迎提出来,谢谢。

    以上說明若有錯誤請指教,謝謝。

    台灣 SQL PASS 社群 | SQL PASS Taiwan

    歡迎參觀我的BLOG - 積沙成塔

    2012年12月3日 8:54