How to pivot rows into columns (custom pivoting)

前端 未结 6 1821
夕颜
夕颜 2020-11-27 05:27

I have a Sql Database table similar to the following:

Day   Period    Subject

Mon   1         Ch
Mon   2         Ph
Mon   3         Mth
Mon   4         CS
M         


        
6条回答
  •  春和景丽
    2020-11-27 06:00

    Just incase you do want the new school method. (The Pivot statement should work in SQL2005+, the VALUES bit for the example data only SQL2008)

    WITH ExampleData AS
    (
    SELECT X.*
      FROM (VALUES  
    ('Mon', 1, 'Ch'),
    ('Mon', 2, 'Ph'),
    ('Mon', 3, 'Mth'),
    ('Mon', 4, 'CS'),
    ('Mon', 5, 'Lab1'),
    ('Mon', 6, 'Lab2'),
    ('Mon', 7, 'Lab3'),
    ('Tue', 1, 'Ph'),
    ('Tue', 2, 'Ele'),
    ('Tue', 3, 'Hu'),
    ('Tue', 4, 'Ph'),
    ('Tue', 5, 'En'),
    ('Tue', 6, 'CS2'),
    ('Tue', 7, 'Mth')
    ) AS X (Day,   Period,    Subject)
    )
    
    SELECT Day, [1] AS P1, [2] AS P2,[3] AS P3, [4] AS P4, [5] AS P5,[6] AS P6,[7] AS P7
    FROM ExampleData
    PIVOT  
    (  
    Max(Subject)  
    FOR Period IN ([1], [2],[3],[4], [5],[6], [7])  
    ) AS PivotTable; 
    

    Result

    Day  P1   P2   P3   P4   P5   P6   P7
    ---- ---- ---- ---- ---- ---- ---- ----
    Mon  Ch   Ph   Mth  CS   Lab1 Lab2 Lab3
    Tue  Ph   Ele  Hu   Ph   En   CS2  Mth
    

提交回复
热议问题