要出下述一张报表:上税率范围          人数 上税合计
Rate = 0.00           19  0.00
0.00 < Rate <= 0.05  32  200
0.05 < Rate <= 0.10  53  400
0.10 < Rate <= 0.15  21  500
合计                    125  1100注:“人数”是在“上税率范围”内“人员ID”合计;
  “上税合计”是在“上税率范围”内“应纳税额”合计。
问:1、如果直接在后台写存储过程,是否能得到如上所述报表;如能,具体怎样写
  2、如果在前台定义报表格式:
    
上税率范围          人数 上税合计
Rate = 0.00           
0.00 < Rate <= 0.05  
0.05 < Rate <= 0.10  
0.10 < Rate <= 0.15  
合计                    前后台应怎样结合写?

解决方案 »

  1.   

    SELECT COUNT(*) as 人数, SUM(aIndex) AS 合计
    FROM EquipsType
    WHERE (Rate >0) and (Rate<=0.05)
    union 
    SELECT COUNT(*) as 人数, SUM(aIndex) AS 合计
    FROM EquipsType
    WHERE (Rate >0.05) and (Rate<=0.1)
    union 
    .....
      

  2.   

    SELECT COUNT(*) as 人数, SUM(税收) AS 合计
    FROM 表名
    WHERE (Rate >0) and (Rate<=0.05)
    union 
    SELECT COUNT(*) as 人数, SUM(税收) AS 合计
    FROM 表名
    WHERE (Rate >0.05) and (Rate<=0.1)
    union 
    SELECT COUNT(*) as 人数, SUM(税收) AS 合计
    FROM 表名
    WHERE (Rate >0.1) and (Rate<=0.15)
      

  3.   

    这样的我会写啊, 
    我的意思是:
    在后台怎样写出下述的格式
    上税率范围          人数 上税合计
    Rate = 0.00           19  0.00
    0.00 < Rate <= 0.05  32  200
    0.05 < Rate <= 0.10  53  400
    0.10 < Rate <= 0.15  21  500
    合计                    125  1100是不是要写张临时表,然后再往里面插记录。还有,税率如果不在范围内,就是空值,如:
    上税率范围          人数 上税合计
    0.40 < Rate <= 0.45  0  0.00  
    怎么这样也查不出记录?
    select cast(ntaxrate*0.01 as numeric(9,2)) 税率,isnull(count(psnid),0) 人数,isnull(cast(sum(ftaxz) as decimal(9,2)),0.00) 上税合计 from wa_tax 
    inner join bd_psndoc on wa_tax.psnid = bd_psndoc.pk_psndoc 
    inner join wa_waclass on wa_tax.pk_wa_class = wa_waclass.pk_wa_class 
    where wa_tax.pk_wa_class in('1001AA100000000004F6','1001AA100000000004FU') and vcalyear = '2003' and vcalmonth = '11' and ( 1 = 1 )
    Group by ntaxrate
    having (ntaxrate > 40.00) and (ntaxrate <= 45.00)
      

  4.   

    在SQL Server中可以这样做:SELECT (CASE WHEN Rate = 0.00 THEN Rate = 0.00'
                 WHEN 0.00 < Rate <= 0.05 THEN '0.00 < Rate <= 0.05'
                 WHEN 0.05 < Rate <= 0.10 THEN '0.05 < Rate <= 0.10'
                 WHEN 0.10 < Rate <= 0.15 THEN '0.10 < Rate <= 0.15'
           END) AS RateScope, ...注:RateScope 是税率范围的字段别名;
      

  5.   

    能把这个记录集导出到Excel中吗?
      

  6.   

    像下述这样写,统计的“人数”及“上税合计”是按照相对应的“税率”来统计的吗?
    如果不对,应该怎样写?
    select (case
              when ntaxrate = 0 then 'Rate = 0.00'
              when ntaxrate = 5 then '0.00 < Rate <= 0.05'
              when ntaxrate = 10 then '0.05 < Rate <= 0.10'
              when ntaxrate = 15 then '0.10 < Rate <= 0.15'
              when ntaxrate = 20 then '0.15 < Rate <= 0.20'
              when ntaxrate = 25 then '0.20 < Rate <= 0.25'
              when ntaxrate = 30 then '0.25 < Rate <= 0.30'
              when ntaxrate = 35 then '0.30 < Rate <= 0.35'
              when ntaxrate = 40 then '0.35 < Rate <= 0.40'
              when ntaxrate = 45 then '0.40 < Rate <= 0.45'
            end) 上税率范围,    count(psnid) 人数,cast(sum(ftaxz) as decimal(9,2)) 上税合计 from wa_tax 
    inner join bd_psndoc on wa_tax.psnid = bd_psndoc.pk_psndoc 
    inner join wa_waclass on wa_tax.pk_wa_class = wa_waclass.pk_wa_class 
    where wa_tax.pk_wa_class in(select ltrim(rtrim(item)) from #tmp_item) 
    and vcalyear = @cyear
    and vcalmonth = @cperiod
    and ( 1 = 1 )
    Group by ntaxrate