--申明一个字符串变量,以供动态拼装
declare @sql varchar(8000)
--拼装SQL命令
set @sql ='select convert(char(7),cor_creat_date,120) as 日期'
--动态地获得用户,为每个用户构建一个列
select @sql = @sql + ',sum(case user_se_name when '''+user_se_name+'''then 1 else 0 end) ['+user_se_name+']'from (select distinct lim_user.user_se_name from cus_cor_cus join lim_user on cor_user_code=user_code) as a
--最终加上选择源和GROUP BY语句
select @sql = @sql+' from cus_cor_cus join lim_user on cor_user_code=user_code group by convert(char(7),cor_creat_date,120)'
exec(@sql) 
源数据
  姓名         客户数      日期
  张三           12        2009-01
  张三           23        2010-02 
  李四           10        2009-01
  李四           2         2010-02
 上面的动态sql 进行了行列转换统计结果为:
  日期    张三    李四 》》》》页面的表头
 2009-01   12      10
 2010-02   23      2怎么把这个结果显示到页面上啊因为页面的表头是动态的(表头就是统计结果里的列名)现在统计的结果集里没有所谓的表头
就是上面的统计结果传到页面只有:
2009-01   12      10
2010-02   23      2
不含有 日期    张三    李四 这个

解决方案 »

  1.   

    可以构造个表示头的行。然后Union All和你原先的合并起来。select '日期','张三',... from dual
    union all @sql
      

  2.   

    哦,对了。难道存储过程返回的rs没有metadata吗?
      

  3.   

    我用的是hibernate框架好不好用啊?
      

  4.   

    在查询结果后再动态生成页面在body的onload里
      

  5.   


    '张三','李四'....这个是动态的不好写死了 也就是union all 之前的select 不好写