利用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;

相关文章:

  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-19
  • 2022-12-23
相关资源
相似解决方案