首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

大家帮小弟我解决一下吧

2012-01-30 
大家帮我解决一下吧表中有以下三个字段:日期,姓名,用量能不能用表格控件或水晶报表或其它的方法形成这样的

大家帮我解决一下吧
表中有以下三个字段: 日期,姓名,用量

能不能用表格控件或水晶报表或其它的方法形成这样的表

李鹏张刚周树人马明
2007-1-134678867
2007-1-245235623
2007-1-356453445
2007-1-456453445
2007-1-567323767
2007-1-634343234
2007-1-778454788



[解决办法]
SQL实现:

SQL code
--原始数据:测试2天create table #T (日期 datetime,姓名 varchar(10),用量 int)insert #Tselect '2007-1-1','李鹏',34 union allselect '2007-1-1','张刚',67 union allselect '2007-1-1','周树人',88 union allselect '2007-1-1','马明',67 union allselect '2007-1-2','李鹏',45 union allselect '2007-1-2','张刚',23 union allselect '2007-1-2','周树人',56 union allselect '2007-1-2','马明',23declare @sql varchar(8000)select @sql=isnull(@sql+',','select 日期,')+'['+姓名+']=sum(case 姓名 when '''+姓名+''' then 用量 else 0 end)' from #T group by 姓名set @sql=@sql+' from #T group by 日期'exec (@sql)/*日期                                                     李鹏          马明          张刚          周树人         ------------------------------------------------------ ----------- ----------- ----------- ----------- 2007-01-01 00:00:00.000                                34          67          67          882007-01-02 00:00:00.000                                45          23          23          56*/--删除测试drop table #T
[解决办法]
表中有以下三个字段: 日期,姓名,用量 

能不能用表格控件或水晶报表或其它的方法形成这样的表 

李鹏 张刚 周树人 马明 
2007-1-1 34 67 88 67 
2007-1-2 45 23 56 23 
2007-1-3 56 45 34 45 
2007-1-4 56 45 34 45 
2007-1-5 67 32 37 67 
2007-1-6 34 34 32 34 
2007-1-7 78 45 47 88 
--------------------
--静态SQL,指姓名只有这四个人。
select convert(varchar(10),日期,120) 日期
sum(case 姓名 when '李鹏' then 用量 else 0 end) '李鹏',
sum(case 姓名 when '张刚' then 用量 else 0 end) '张刚',
sum(case 姓名 when '周树人' then 用量 else 0 end) '周树人',
sum(case 姓名 when '马明' then 用量 else 0 end) '马明'
from tb
group by convert(varchar(10),日期,120)

热点排行