SQL server Pivot on Multiple Columns

前端 未结 3 1423
失恋的感觉
失恋的感觉 2021-01-02 07:33

I am trying to pivot on multiple columns. I am using SQL server 2008. Here is what I have tried so far

CREATE TABLE #t ( id int, Rscd varchar(10),Accd varcha         


        
相关标签:
3条回答
  • 2021-01-02 07:58

    Dont Use the ID Column. Use a derived table to retrieve all columns except the ID and then use the PIVOT table.

    0 讨论(0)
  • 2021-01-02 08:15
    Select id,sum([1]),sum([2]),sum([11]),sum([12]) FROM
    (SELECT id, Rscd,Accd, position , position +10 as Aposition 
    From #t)
    As query
    PIVOT (MAX(Rscd )
          FOR Position IN ([1],[2])) AS Pivot1
          PIVOT (MAX(Accd )
          FOR Aposition IN ([11],[12])) AS Pivot2
    
    group by id
    
    0 讨论(0)
  • 2021-01-02 08:16

    I would unpivot the columns into pairs first, then pivot them. Basically the unpivot process will convert the pairs of columns (rscd, position and accd, aposition) into rows, then you can apply the pivot. The code will be:

    select id, [1], [2], [11], [12]
    from
    (
      select id, col, value
      from #t
      cross apply
      (
        select rscd, position union all
        select Accd, position + 10
      ) c (value, col)
    ) d
    pivot
    (
      max(value)
      for col in ([1], [2], [11], [12])
    ) piv;
    

    See SQL Fiddle with Demo

    0 讨论(0)
提交回复
热议问题