SQL-Server-2005-PIVOT运算符的使用(一列多行数据合并为一行).doc

SQL-Server-2005-PIVOT运算符的使用(一列多行数据合并为一行).doc

ID:57894200

大小:209.00 KB

页数:8页

时间:2020-09-02

SQL-Server-2005-PIVOT运算符的使用(一列多行数据合并为一行).doc_第1页
SQL-Server-2005-PIVOT运算符的使用(一列多行数据合并为一行).doc_第2页
SQL-Server-2005-PIVOT运算符的使用(一列多行数据合并为一行).doc_第3页
SQL-Server-2005-PIVOT运算符的使用(一列多行数据合并为一行).doc_第4页
SQL-Server-2005-PIVOT运算符的使用(一列多行数据合并为一行).doc_第5页
资源描述:

《SQL-Server-2005-PIVOT运算符的使用(一列多行数据合并为一行).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SQLServer2005PIVOT运算符的使用PIVOT,UNPIVOT运算符是SQLServer2005支持的新功能之一,主要用来实现行到列的转换。本文主要介绍PIVOT运算符的操作,以及如何实现动态PIVOT的行列转换。关于UNPIVOT及SQLServer2000下的行列转换请参照本人的其它文章。一、使用PIVOT和UNPIVOT命令的SQLServer版本要求1、数据库的最低版本要求为SQLServer2005或更高。2、必须将数据库的兼容级别设置为90或更高。3、查看我的数据库版本及兼容级别。如果不

2、知道怎么看数据库版本或兼容级别的话可以在SQLServerManagementStudio新建一个查询窗口输入:print@@version,运行之后在我的本机上得到:MicrosoftSQLServer2008R2(RTM)-10.50.1617.0(X64)Apr22201119:23:43Copyright(c)MicrosoftCorporationDataCenterEdition(64-bit)onWindowsNT6.1(Build7601:ServicePack1)我们选择一个数据库,

3、然后【右键】--【属性】,选择【选项】得到下图的信息。在确认数据库的版本和兼容级别符合1、2点的要求后,才可以接着继续往下学习。二、PIVOT的语法SELECT[non-pivotedcolumn],--optional[additionalnon-pivotedcolumns],--optional[firstpivotedcolumn],[additionalpivotedcolumns]FROM(SELECTqueryproducingsqldataforpivot--selectpivotcolumns

4、asdimensionsand--valuecolumnsasmeasuresfromsqltables)ASTableAliasPIVOT((columnforaggregationormeasurecolumn)--MIN,MAX,SUM,etcFOR[]IN([firstpivotedcolumn],...,[lastpivotedcolumn]))ASPivotTableAliasORDERBYclause–optional三、PIVOT的使用例子1、静态PIV

5、OT的用法为演示,从NorthWind数据库中提取一些记录生成新的Orders表,然后使用PIVOT将行转换到列。USEtempdbGOSELECTYEAR(OrderDate)AS[Year],CustomerID,od.QuantityINTOdbo.OrdersFROMNorthWind..OrdersASoJOINNorthWind..[OrderDetails]ASodONo.OrderID=od.OrderIDWHEREo.CustomerIDIN('BONAP','BOTTM','ANTON')S

6、ELECTCustomerID,[1996],[1997],[1998]FROMdbo.OrdersPIVOT(SUM(Quantity)FOR[Year]IN([1996],[1997],[1998]))ASx/*TSQL中pivot的结构:●用于生成pivot数据源的源表,作为一个输入表●pivot表●聚合列及透视列的选择TSQL中pivot的实现:1->上例中Orders表相当于是一个输入表。包含了CustomerID,[Year],Quantity三个列。Year是透视列,用于生成维度。pivot首先将

7、聚合列之外的列进行分组,并对其实现聚合。本列中则是对聚合列Quantity之外的列先实现分组,即对CustomerID,Year进行分组,并对其Quantity实现聚合,相当于先做如下处理:*/SELECTCustomerID,[Year],SUM(Quantity)ASTotalFROMdbo.OrdersGROUPBYCustomerID,[Year]ORDERBYCustomerID/*Result:CustomerIDYearTotal--------------------------------AN

8、TON199624ANTON1997295ANTON199840BONAP1996181BONAP1997486BONAP1998313BOTTM199681BOTTM1997454BOTTM1998421*//*2->pivot根据FOR[Year]IN子句中的值,在结果集中来建立对应的新列,本例中即是列[1996],[1997],[1998]对于新列[1996],[1997],[1

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

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

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