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

2016-01-29 16:25 60 1 收藏

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

【 tulaoshi.com - SQLServer 】

 

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)


--创建测试环境
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)

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)

--结果

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

 

来源:http://www.tulaoshi.com/n/20160129/1498544.html

延伸阅读
标签: Web开发
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td {        margin:0;       padding:0;   } table {      border-collapse:collapse;       border-spacing:0; ...
Delphi支持参数化SQL语句,不过俺很少用Paramters/Params属性,一般都是自己构造SQL, 用SQL.Text:='Select * from ..Where ID='''+edit1.text+''''; 不过这种方法要小心SQL注入攻击哦。 今天改用ADOQuery控件的Paramters属性,本已为简单的很,一用发现了不少问题。由于我只使用一个ADOQuery控件...
标签: PHP
  多年前本人开始从事三维动画方面的学习,后学习了PHP,发现可以通过PHP动态生成VRML文档,有点类似于Generator动态生成Flash的方式。 由于VRML博大精深,这里只介绍一个简单的例子,还可以将各种VRML结点存入数据库中,这样的虚拟现实网页将……,爽! 下面是源程序。注意:在服务器上,要将让PHP处理wrl格式的文档,否则后果将是没有...
标签: Web开发
第一个:  Untitled Document [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]   第二个: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
Option Explicit Dim WithEvents objExt As VBControlExtender ' 使用 WithEvents 声明 VBControlExtender 变量 Private Sub LoadControl() 'Licenses.Add "Project1.Control1", "ewrinvcmcoe" Licenses.Add "MSFlexGridLib.MSFlexGrid", _ "72E67120-5959-11cf-91F6-C2863C385E30" Set objExt = Controls.Add("MSFlexGridLib.MSFlexGrid"...

经验教程

117

收藏

47
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部