首 页 网站运营 网络编程 网页制作 图象媒体 数据库 建站资源 网管专区 下载专区 最新资讯
IT学堂|红色黑客联盟
设为首页
加入收藏
联系站长
您所在的位置:首页>数据库>Mysql>文章内容
经常用到的交叉表问题,一般用动态SQL能生成动态列!
来源: 作者: 发布时间:2007-04-13

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




[推荐] [返回顶部] [打印本页] [关闭窗口]
热点文章
·用批处理对MySQL进行数据操作
·PHP中操作MySQL的一些要注意的问题
·实例讲解:.NET如何访问MySQL数据库
·让MySQL与ASP.NET配合更强大
·数据备份中可能出错的情况及解决办法
·SQL Server连接失败错误分析与排除(1)
·SQL Server连接失败错误分析与排除(2)
·扩展微软 SQL Server 的空间功能
·了解MYSQL数据库调度与锁定的问题
·实例讲解MySQL数据库的查询优化技术
相关文章
·在SQLSERVER2005中实现素数计算
·取得拼音字头的存储过程
·删除Access数词库中的空记录
·使用T_SQL脚本创建SQLServer2000后台
·精彩的近乎完美的分页存储过程
·Windows XP下安装SQL2000企业版
·如何在把超过固定长度的文字以"……"
·MySQL实现表中取出随机数据
·Windows 2000下优化Oracle9i性能
·查询表主键外键信息的SQL
文章检索
Google
相关文章
·在SQLSERVER2005中实现
·取得拼音字头的存储过程
·删除Access数词库中的空
·使用T_SQL脚本创建SQLSe
·精彩的近乎完美的分页存
·Windows XP下安装SQL200
·如何在把超过固定长度的
·MySQL实现表中取出随机
·Windows 2000下优化Orac
·查询表主键外键信息的SQ
·在IE中直接连接SQL数据
·关于对sql2000查询结果
·使用正规表达式编写更好
·查看当前进程,或死锁进
·解决windows 2003+Sql20