Creating Cross Tab Queries in SQL ServerSET QUOTED_IDENTIFIER OFF 
Creating Cross Tab Queries in SQL Server
GO
Creating Cross Tab Queries in SQL Server
SET ANSI_NULLS OFF 
Creating Cross Tab Queries in SQL Server
GO
Creating Cross Tab Queries in SQL Server
Creating Cross Tab Queries in SQL Server
CREATE PROCEDURE [dbo].[SimpleXTab] @XField varChar(20), @XTable varChar(20),
Creating Cross Tab Queries in SQL Server
@XWhereString varChar(250), @XFunction varChar(10), @XFunctionField varChar(20), @XRow varchar(40)
Creating Cross Tab Queries in SQL Server 
AS
Creating Cross Tab Queries in SQL Server
Declare @SqlStr nvarchar(4000)
Creating Cross Tab Queries in SQL Server
Declare @tempsql nvarchar(4000)
Creating Cross Tab Queries in SQL Server
Declare @SqlStrCur nvarchar(4000)
Creating Cross Tab Queries in SQL Server
Declare @col nvarchar(100)
Creating Cross Tab Queries in SQL Server
Creating Cross Tab Queries in SQL Server
set @SqlStrCur = N'Select [' + @XField + '] into ##temptbl_Cursor from [' + @XTable + ']  ' + @XWhereString + ' Group By [' + @XField + ']'
Creating Cross Tab Queries in SQL Server
GO


以NorthWind举例说明使用情况:
先建个View:
Creating Cross Tab Queries in SQL ServerSET QUOTED_IDENTIFIER ON 
Creating Cross Tab Queries in SQL Server
GO
Creating Cross Tab Queries in SQL Server
SET ANSI_NULLS ON 
Creating Cross Tab Queries in SQL Server
GO
Creating Cross Tab Queries in SQL Server
Creating Cross Tab Queries in SQL Server
CREATE VIEW dbo.vw_SampleQuery
Creating Cross Tab Queries in SQL Server
AS
Creating Cross Tab Queries in SQL Server
SELECT     dbo.Orders.ShipName, dbo.Categories.CategoryName, dbo.Orders.ShipCountry, (dbo.[Order Details].UnitPrice * dbo.[Order Details].Quantity) 
Creating Cross Tab Queries in SQL Server                      
* (1 - dbo.[Order Details].Discount) AS OrderAmt
Creating Cross Tab Queries in SQL Server
FROM         dbo.Orders INNER JOIN
Creating Cross Tab Queries in SQL Server                      dbo.
[Order Details] ON dbo.Orders.OrderID = dbo.[Order Details].OrderID INNER JOIN
Creating Cross Tab Queries in SQL Server                      dbo.Products 
ON dbo.[Order Details].ProductID = dbo.Products.ProductID INNER JOIN
Creating Cross Tab Queries in SQL Server                      dbo.Categories 
ON dbo.Products.CategoryID = dbo.Categories.CategoryID
Creating Cross Tab Queries in SQL Server
Creating Cross Tab Queries in SQL Server
GO
Creating Cross Tab Queries in SQL Server
SET QUOTED_IDENTIFIER OFF 
Creating Cross Tab Queries in SQL Server
GO
Creating Cross Tab Queries in SQL Server
SET ANSI_NULLS ON 
Creating Cross Tab Queries in SQL Server
GO
Creating Cross Tab Queries in SQL Server

执行下面的语句:
Creating Cross Tab Queries in SQL ServerExecute SimpleXTab 'CategoryName''vw_SampleQuery''''Sum''OrderAmt''ShipCountry'
效果图:
Creating Cross Tab Queries in SQL Server

这些资料来自以下这个网址:
http://www.oreillynet.com/pub/a/network/2004/12/17/crosstab.html

相关文章: