WEB开发网
开发学院数据库MSSQL Server T-SQL Enhancement in SQL Server 2005 - Part II... 阅读

T-SQL Enhancement in SQL Server 2005 - Part II

 2008-12-06 10:15:51 来源:WEB开发网   
核心提示:在第一部分中,我们讨论了APPLY和CTE这两个T-SQL Enhancement,T-SQL Enhancement in SQL Server 2005 - Part II,APPLY实现了Table和TVF的Join,CTE通过创建“临时的View”的方式使问题化繁为简,相信大家在进行报表

在第一部分中,我们讨论了APPLY和CTE这两个T-SQL Enhancement。APPLY实现了Table和TVF的Join,CTE通过创建“临时的View”的方式使问题化繁为简。现在我们接着来讨论另外两个重要的T-SQL Enhancement Items:PIVOT和Ranking。 

三、      PIVOT Operator

PIVOT的中文意思是“在枢轴上转动”,比如对于一个2维坐标,将横坐标变成纵坐标,将纵坐标变成横坐标。反映在一个RelationalTable上的意思就是:变成为列,变列为行。相信大家在进行报表设计的时候都遇到过类似于这样的需求:统计2002年内某个销售人员第一季度每个月处理的订单数。在AdventureWorks Sample Databse中,Sales Order存储于SaleOrderHeader这张表中,它的结果如下:

T-SQL Enhancement in SQL Server 2005 - Part II

我们一般情况下通过下面的SQL实现我们提出的统计功能:

SELECT SalesPersonID,
SUM(CASE DATEPART(MM,OrderDate)WHEN 1 THEN 1 ELSE 0 END) AS JAN,
SUM(CASE DATEPART(MM,OrderDate)WHEN 2 THEN 1 ELSE 0 END) AS FEB,
SUM(CASE DATEPART(MM,OrderDate)WHEN 3 THEN 1 ELSE 0 END) AS MAR,
SUM(CASE DATEPART(MM,OrderDate)WHEN 4 THEN 1 ELSE 0 END) AS APR
FROM Sales.SalesOrderHeader
WHERE DATEPART(yyyy,OrderDate) = 2002
GROUP BY SalesPersonID

于是我们得到了这样的统计数据:

T-SQL Enhancement in SQL Server 2005 - Part II

1 2 3 4  下一页

Tags:SQL Enhancement in

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接