经常用到的交叉表问题,一般用动态SQL能生成动态列

转载 2011年01月12日 11:03:00

--原贴

http://community.csdn.net/Expert/topic/4200/4200386.xml?temp=.4856989

原始表如下格式:
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

 


本文来自CSDN博客http://blog.csdn.net/zlp321002/archive/2005/08/10/449802.aspx

相关文章推荐

如何快速的制作一张自由报表-自由扩展

本文介绍使用开发平台制作一张自由报表-自由扩展   联系电话:15050176512  Q Q 号码:136846796  平台网址:www.sdpsoft.com   一、新建数...

双区间交叉报表的实现办法(实例)

使用Jasper或BIRT等报表工具时,常会碰到一些非常规的统计,用报表工具本身或SQL都难以处理,比如交叉表的行组和列组都是分段区间,测度(measurem)来自其他数据库表。集算器具有结构化强计算...

一个动态交叉分片报表的几种实现方法

http://blog.runqian.com.cn/?p=1382 动态列报表在报表应用中很常见,往往由于业务的不同复杂度也差异很大。复杂的动态列报表在实现上往往十分困难,常见于数据源准备...

如何制作交叉报表-多层交叉

本文介绍如何制作一张交叉报表   联系电话:15050176512  Q Q 号码:136846796  平台网址:www.sdpsoft.com   一、新建数据源 二、操作步...

动态sql创建表、列

通用动态SQL查询串的生成

  • 2008-06-16 07:12
  • 176KB
  • 下载

使用动态SQL实现行列转换和按列递减的功能

       /*    基本需求:    库房里会记录每个物料每周的使用数量。    报表要求显示物料的初始数量,及每周使用后的剩余数量。   &...
  • ykj_fj
  • ykj_fj
  • 2014-04-01 09:07
  • 1094

使用动态SQL实现按列递减的功能

代码如下:    declare @d_startdate datetime  --计算开始的时间    declare @i_week int -- 计算的周数    declare @i...

SQL Server 动态SQL EXEC加括号与不加括号的一点小问题

SQL Server 2008 R2关键代码 DECLARE @lv_address VARCHAR(2000), @lv_re_ids V...

Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和 @DynamicUpdate 如果是在配置文件的话那就是dynamic -insert 和 dynam...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)