SQLSERVER行转列和列转行.docx

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQLSERVER行转列和列转行

1:行转列?子查询,获取一定数据集结果SELECT objid,action,count(1) AS [count] FROM T_MyAttention WHERE objid IN(SELECT TOP 10 objid FROM T_MyAttentiontma GROUP BY objid ORDER BY count(1) DESC)GROUP BY objid,action?下面用行转列语法获取最终结果??select *from ?(SELECT objid,action,count(1) AS [count] FROM T_MyAttention WHERE objid IN(SELECT TOP 10 objid FROM T_MyAttentiontma GROUP BY objid ORDER BY count(1) DESC)GROUP BY objid,action) tpivot ( sum(count) for t.action in ([1],[2],[3],[4])) as ourpivot???微软官方的图:???2:列转行?怎么把一条记录拆分成几条记录?User???? No.???????? A?????????? B??????????? C1??????? 1?????????? 21????????? 34?????????? 241??????? 2?????????? 42????????? 25?????????? 16RESULT:User???? No.??????? Type?????? Num1??????? 1????????? A????????? 211??????? 1????????? B????????? 341??????? 1????????? C????????? 241??????? 2????????? A????????? 421??????? 2????????? B????????? 251??????? 2????????? C????????? 16declare @t table(usserint ,no int ,a int,bint, c int)insert into @t select 1,1,21,34,24union all select 1,2,42,25,16SELECT usser,no,Type=attribute, Num=valueFROM @t? UNPIVOT? (??? value FOR attribute IN([a], [b], [c])? ) AS UPV?列转行备注value FOR attribute IN([a], [b], [c])这句话中,a,b,c是列的名字,但是列名不能出现在上句的select语句中。-结果/*usser?? no?????? Type????? num----???????? ---????? --------? --------1????????? ?1???????? a????????? 211?????????? 1?????????b??????????341?????????? 1?????????c????????? 241?????????? 2?????????a????????? 421?????????? 2?????????b??????????251?????????? 2?????????c?????????? 16*/?T-SQL语句中,PIVOT命令可以实现数据表的列转行,UNPIVOT则与其相反,实现数据的行转列。本文结合实例说明了这一过程,希望能对您有所帮助。AD:WOT2015 互联网运维与开发者大会 热销抢票一、使用PIVOT和UNPIVOT命令的SQL Server版本要求1.数据库的最低版本要求为SQL Server 2005 或更高。2.必须将数据库的兼容级别设置为90 或更高。3.查看我的数据库版本及兼容级别。如果不知道怎么看数据库版本或兼容级别的话可以在SQL Server Management Studio新建一个查询窗口输入:print @@version,运行之后在我的本机上得到:Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86)Apr? 2 2010 15:53:02Copyright (c) Microsoft CorporationExpress Edition with Advanced Services on Windows NT 5.2 X86 (Build 3790: Service Pack 2)然后我们选择一个数据库然后右

您可能关注的文档

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档