sqlserver行转列和列转行

sqlserver行转列和列转行

ID:8982725

大小:311.15 KB

页数:17页

时间:2018-04-14

sqlserver行转列和列转行_第1页
sqlserver行转列和列转行_第2页
sqlserver行转列和列转行_第3页
sqlserver行转列和列转行_第4页
sqlserver行转列和列转行_第5页
资源描述:

《sqlserver行转列和列转行》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1:行转列 子查询,获取一定数据集结果SELECTobjid,action,count(1)AS[count]FROMT_MyAttentionWHEREobjidIN(SELECTTOP10objidFROMT_MyAttentiontmaGROUPBYobjidORDERBYcount(1)DESC)GROUPBYobjid,action 下面用行转列语法获取最终结果  select*from (SELECTobjid,action,count(1)AS[count]FROMT_MyAttenti

2、onWHEREobjidIN(SELECTTOP10objidFROMT_MyAttentiontmaGROUPBYobjidORDERBYcount(1)DESC)GROUPBYobjid,action)tpivot(sum(count)fort.actionin([1],[2],[3],[4]))asourpivot   微软官方的图:   2:列转行 怎么把一条记录拆分成几条记录?User    No.        A          B           C1       1      

3、    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   

4、      251       2         C         16declare@ttable(usserint,noint,aint,bint,cint)insertinto@tselect1,1,21,34,24unionallselect1,2,42,25,16SELECTusser,no,Type=attribute,Num=valueFROM@t UNPIVOT (   valueFORattributeIN([a],[b],[c]) )ASUPV 列转行备注valueFORatt

5、ributeIN([a],[b],[c])这句话中,a,b,c是列的名字,但是列名不能出现在上句的select语句中。-结果/*usser  no      Type     num----        ---     -------- --------1          1        a         211          1         b          341          1         c         241          2         a    

6、     421          2         b          251          2         c          16*/ T-SQL语句中,PIVOT命令可以实现数据表的列转行,UNPIVOT则与其相反,实现数据的行转列。本文结合实例说明了这一过程,希望能对您有所帮助。AD:WOT2015互联网运维与开发者大会热销抢票一、使用PIVOT和UNPIVOT命令的SQLServer版本要求1.数据库的最低版本要求为SQLServer2005或更高。2.必须将数据库的兼容级别

7、设置为90或更高。3.查看我的数据库版本及兼容级别。如果不知道怎么看数据库版本或兼容级别的话可以在SQLServerManagementStudio新建一个查询窗口输入:print@@version,运行之后在我的本机上得到:MicrosoftSQLServer2008R2(RTM)-10.50.1600.1(IntelX86)Apr 2201015:53:02Copyright(c)MicrosoftCorporationExpressEditionwithAdvancedServicesonWin

8、dowsNT5.2(Build3790:ServicePack2)然后我们选择一个数据库然后右键-属性选择[选项]得到下图的信息。 在确认数据库的版本和兼容级别符合1,2点的要求后你才可以接着继续往下学习。二、使用PIVOT实现数据表的列转行1.在这里我们先构建一个测试数据表(这里使用的是临时表,以方便我们在退出会话的时候自动删除表及其数据)首先我们先设计一个表架构为#Student{学生编号[PK], 姓名,性别,所属班级}的表,然后编写如下

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。