输出结果集是什么格式?ID  age  percent_age  num_age  sex  precent_sex  num_sex  ...
-------------------------------------------------------------------------

解决方案 »

  1.   

    --如果楼主是想把两种查询用一个sql语句处理输出?可以试试下面的。
    declare @rd_memeber table(id int,birth datetime,sex varchar(10))
    insert into @rd_memeber
    select 1,'1990-1-1','女' union
    select 2,'1991-1-1','男' union
    select 3,'1993-1-1','女' union
    select 4,'1991-1-1','女' union
    select 5,'1990-1-1','男' union
    select 6,'1993-1-1','女' union
    select 7,'1990-1-1','女' declare @field varchar(20)
    select @field='birth'
    --此处可以加入插入语句 insert into ....
    SELECT case @field when 'birth' then convert(varchar,DATEDIFF(yy, birth, GETDATE())) else sex end AS col, RTRIM(COUNT(*) * 100 /
              (SELECT COUNT(1)
             FROM @rd_memeber)) + '%' AS [percent], COUNT(*) AS num
    FROM @rd_memeber
    GROUP BY case @field when 'birth' then convert(varchar,DATEDIFF(yy, birth, GETDATE())) else sex end/*结果
    13 28% 2
    15 28% 2
    16 42% 3*/
      

  2.   

    create table #tmp(ID int ,Field varchar(20),percent varchar(10),num int)if @Field = 'birth' 
      insert #tmp(Field,percent,num)
      SELECT DATEDIFF(yy, birth, GETDATE()) AS age, RTRIM(COUNT(*) * 100 /
                      (SELECT COUNT(1)
                     FROM RD_member)) + '%' AS [percent], COUNT(*) AS num
            FROM RD_member
            GROUP BY DATEDIFF(yy, birth, GETDATE())
    if @Field = 'sex'
      insert #tmp(Field,percent,num)
      SELECT sex, RTRIM(COUNT(*) * 100 /
              (SELECT COUNT(1)
             FROM RD_member)) + '%' AS [percent], COUNT(*) AS num
    FROM RD_member
    GROUP BY sex
    select * from #tmp
    drop table #tmp