zoukankan      html  css  js  c++  java
  • SQL Server 2005 TSQL学习笔记:建立动态的PIVOT

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

    ----Static PIVOT===========
    select * from 
    (
        
    select  CustomerID, datepart(yyyy,OrderDate) as Years, 1 As Counts
        
    from    Sales.SalesOrderHeader
    ) piv PIVOT
    (
        
    sum(Counts)
        
    for Years in ([2001],[2002],[2003])
    as chd
    Order By CustomerID

    --Dynamic PIVOT============
    declare @Years as nvarchar(100);
    with YearCTE as
    (
        
    select distinct year(OrderDate) as YearNum from Sales.SalesOrderHeader
    )
    select @Years  = isnull(@Years + N',[''[' ) + cast(YearNum as nvarchar(4)) + ']'   from YearCTE order by YearNum;

    print @Years;

    declare @Sql as nvarchar(max);

    set @Sql = N'select * from 
    (
        select  CustomerID, datepart(yyyy,OrderDate) as Years, 1 As Counts
        from    Sales.SalesOrderHeader
    ) piv PIVOT
    (
        sum(Counts)
        for Years in (
    ' + @Years + ')
    ) as chd
    Order By CustomerID
    ';
    execute sp_executesql @sql;
  • 相关阅读:
    Linux入门
    Linux和VMware
    vue中select的使用以及select设置默认选中
    Django ModelFrom组件
    Django登录(含随机生成图片验证码)注册实例
    Django组件---Django请求生命周期和中间件
    Python3之使用Crypto
    ORM大结局
    ORM多表查询下
    Pycharn破解补丁激活
  • 原文地址:https://www.cnblogs.com/rockniu/p/1229646.html
Copyright © 2011-2022 走看看