SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT

利用CTE,我们可以方便地一列中的所有值连接成一个字串,然后在PIVOT语句中使用,以下是示例:

 

SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT -- --Static PIVOT===========
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
select   *   from  
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT(
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT    
select   CustomerID,  datepart (yyyy,OrderDate)  as  Years,  1   As  Counts
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT    
from     Sales.SalesOrderHeader
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT) piv PIVOT
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT(
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT    
sum (Counts)
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT    
for  Years  in  ( [ 2001 ] , [ 2002 ] , [ 2003 ] )
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
as  chd
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
Order   By  CustomerID
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
-- Dynamic PIVOT============
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
declare   @Years   as   nvarchar ( 100 );
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
with  YearCTE  as
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT(
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT    
select   distinct   year (OrderDate)  as  YearNum  from  Sales.SalesOrderHeader
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT)
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
select   @Years    =   isnull ( @Years   +  N ' ,[ ' ' [ '  )  +   cast (YearNum  as   nvarchar ( 4 ))  +   ' ] '     from  YearCTE  order   by  YearNum;
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
print   @Years ;
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
declare   @Sql   as   nvarchar ( max );
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
set   @Sql   =  N ' select * from 
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT(
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT    select  CustomerID, datepart(yyyy,OrderDate) as Years, 1 As Counts
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT    from    Sales.SalesOrderHeader
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT) piv PIVOT
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT(
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT    sum(Counts)
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT    for Years in (
'   +   @Years   +   ' )
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT) as chd
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOTOrder By CustomerID
' ;
SQL Server 2005 T-SQL学习笔记:建立动态的PIVOT
execute  sp_executesql  @sql ;

你可能感兴趣的:(sql server 2005)