当前位置:首页 > 系统运维 > 正文内容

SQL Server行转列的什么情况下被用?

a8116255316年前 (2010-07-13)系统运维10

以下的文章主要描述的是SQL Server行转列在什么情况下可能被应用的道,你假如对其有兴趣的话你就可以点击以下的文章进行观看了,以下的文章将会揭开它的神秘面纱,以下的文章将会揭开它的神秘面纱。

有些时候还是要用到SQL Server行转列,比如下面的数据:

一般的表结构大多会这么设计,通过关联查询就可以得出上面的数据(客运量就随便123了,非常时期以防 *** )

不用说,大家也明白要得到下面的数据:

列数不多的话一般可以这样,也是网上比较经典的写法

Select 时间,

sum(case when 线路='1号线' then客运量 end) As '1号线' ,

sum(case when 线路='2号线' then客运量 end) As '2号线' ,

sum(case when 线路='5号线' then客运量 end) As '5号线' ,

......

Fromtable Group By 时间

在SQL Server2005里可以用Pivot关键字来操作,如下:

declare@strnvarchar(max)  set@str='select时间' select@str=@str+',['+线路+']'from#Tgroupby线路  set@str=@str+'FROM( 

SELECT时间,客运量,线路

FROM#T)AST

PIVOT(sum(客运量)FOR线路IN

('

select@str=@str+'['+线路+'],'from#Tgroupby线路

set@str=left(@str,Len(@str)-1)

set@str=@str+'))ASthePivot

ORDERBY时间'

declare@T1table(datedatetime,一号线float,二号线float,五号线float,十号线float,十三号线float,八通线float,奥运支线float,机场线float)

INSERTINTO@T1exec(@str)  SELECT*FROM@T1  droptable#T 

SQL Server行转列上面的语句假如运行提示不支持pivot关键字的话(一般SQL2000库导入到SQL2005可能出现这问题),执行下这句:EXEC sp_dbcmptlevel 数据库名称,90

为了方便看,字段改成中文了,其中#T表的数据就是最上面之一张图的数据(只要基础数据源组织成这样的就行)

把处理后的数据存放在表变量@T1中(当然临时表也行),因为还要和其他表进行关联,导出一张大表,如下(表的部分列):

大致就这样吧

处理的方式应该还有其它的,仅供参考。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/21935.html

分享给朋友:

“SQL Server行转列的什么情况下被用?” 的相关文章

上帝不止一个 更多Windows7 快捷模式.

上帝不止一个 更多Windows7 快捷模式.

国外媒体CNET NEWS就这个“上帝模式”和微软Windows部门主管Steven Sinofsky进行邮件交流后得知,这其实只是众多快捷方式中的一个,Sinofsky在邮件里给出了十多个这类快捷方式的关键字符串。 它们的建立方法和之前的“上帝模式”一样,在任意位置新建的一个文件夹,然后改名即可...

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态   Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...

windows 7旗舰版系统提示应用程序错误代码0xc0000409的故障原因

windows 7旗舰版系统提示应用程序错误代码0xc0000409的故障原因

问题现象,具体如下所示:  故障分析: 一般来说,出现这种情况是因为电脑误删系统文件或者是系统文件被顽固木马破坏。       解决方法: 1、下载360安全卫士,找到里面的急救箱开始急救,然后进行修复,完成后重新启动; 2、下载瑞...

Ubuntu系统上挂载U盘和Windows分区问题的解决实例

Ubuntu系统上挂载U盘和Windows分区问题的解决实例

Ubuntu挂载U盘问题 复制代码代码如下: 老是说special device /dev/sdb1 does not exist,无比郁闷 复制代码代码如下:#fdisk /dev/sda 复制代码代码如下: 是有个 这个咚咚。。。。 复制代码代码如下: 最后: 复制代码代码如下:...

windows 7任务栏快捷方式如何居中显示默认从左像右排列

windows 7任务栏快捷方式如何居中显示默认从左像右排列

使用Windows 7的朋友都知道,任务栏上的快捷方式图标都是靠近开始菜单按钮,从左像右排列,不过也有一些用户喜欢左右对称,想要把那些快捷方式居中显示,看起来这个任务好像无从下手,其实一点也不难,只要通过下面方法就能轻松搞定。 1、首先在电脑磁盘中任何一个地方新建一个文件夹。 2、右击任务栏-&...

windows 7如何将常用文件夹添加到任务栏以提高工作效率

windows 7如何将常用文件夹添加到任务栏以提高工作效率

每一位用户的Windows 7系统上,或多或少都会有一到两个自己常用的文件夹,那么如何将这些常用的文件夹添加到任务栏上,增加我们的工作效率呢 许多用户只知道移动exe程序文件到任务栏,却不知道文件夹怎么移,下面小编通过图文教程来告诉大家方法。 操作方法: 1、首先将你使用频率最高的那个文件夹重命...