本站内容搜索:
   您的位置:素材中国>>教程 >>数据库 >>MS SQL >>经常用到的交叉表问题,一般用动态SQL能生成动态列 提交错误报告
经常用到的交叉表问题,一般用动态SQL能生成动态列
[ 来源:素材中国 | 作者:| 时间:2005-11-26 12:51:18 | 浏览:人次 ]

 
 

原始表如下格式:
Class     CallDate    CallCount
1     2005-8-8    40
1     2005-8-7    6
2     2005-8-8    77
3     2005-8-9    33
3     2005-8-8    9
3     2005-8-7    21

根据Class的值,按日期分别统计出CallCount1,CallCount2,CallCount3。
当该日期无记录时值为0
要求合并成如下格式:
CallDate  CallCount1  CallCount2  CallCount3
2005-8-9  0       0       33
2005-8-8  40      77      9
2005-8-7  6       0       21

--创建测试环境
Create table  T  (Class varchar(2),CallDate datetime, CallCount int)
insert into T select '1','2005-8-8',40
union all select '1','2005-8-7',6
union all select '2','2005-8-8',77
union all select '3','2005-8-9',33
union all select '3','2005-8-8',9
union all select '3','2005-8-7',21
--动态SQL
declare @s varchar(8000)
set @s='select CallDate '
select @s=@s+',[CallCount'+Class+']=sum(case when Class='''+Class+''' then CallCount else 0 end)'
from T
group by Class
set @s=@s+' from T group by CallDate order by CallDate desc '
exec(@s)

--结果

CallDate                                               CallCount1  CallCount2  CallCount3 
------------------------------------------------------ ----------- ----------- -----------
2005-08-09 00:00:00.000                                0           0           33
2005-08-08 00:00:00.000                                40          77          9
2005-08-07 00:00:00.000                                6           0           21

--删除测试环境

drop table T

 
 
       
   您的位置:素材中国>>教程 >>数据库 >>MS SQL >>经常用到的交叉表问题,一般用动态SQL能生成动态列
 点此在百度搜索关键字"经常用到的交叉表问题,一般用动态SQL能生成动态列"  点此在GOOGLE搜索关键字"经常用到的交叉表问题,一般用动态SQL能生成动态列"
热门文章:
  ·二进制转十进制的SQL函数   ·SQL2005 SSIS
  ·对数据库字段使用默认值   ·exp/imp导出导入工具的使用
  ·经常用到的交叉表问题,一般用动态SQL能生成动态列   ·精华全面接触SQL语法
  ·在存储过程中连接远程数据库并进行操作   ·SqlServer的更新锁(UPDLOCK)
  ·几种分页算法。翻页必备   ·关于SQL Server SQL语句查询分页数据的解决方案

  首页  素材图片  高精图库  矢量图库  网页素材  网页模板  壁纸  明星  下载  教程  字体  香车美女  QQ专题  论坛

网站介绍 | 广告业务 | 设计业务 | 免责声明 | 版权声明 | 联系我们|提交错误报告
素材中国版权所有