--申明一个字符串变量,以供动态拼装
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
不含有 日期 张三 李四 这个
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
不含有 日期 张三 李四 这个
union all @sql
'张三','李四'....这个是动态的不好写死了 也就是union all 之前的select 不好写