How to pivot rows into columns (custom pivoting)

前端 未结 6 1827
夕颜
夕颜 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 05:53

    DECLARE @TIMETABLE TABLE (
        [Day]       CHAR(3),
        [Period]    TINYINT,
        [Subject]   CHAR(5)
    )
    INSERT INTO @TIMETABLE([Day], [Period], [Subject])
    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')
    
    SELECT 
        [Day],
        MAX(CASE [Period] WHEN 1 THEN [Subject] END) AS P1,
        MAX(CASE [Period] WHEN 2 THEN [Subject] END) AS P2,
        MAX(CASE [Period] WHEN 3 THEN [Subject] END) AS P3,
        MAX(CASE [Period] WHEN 4 THEN [Subject] END) AS P4,
        MAX(CASE [Period] WHEN 5 THEN [Subject] END) AS P5,
        MAX(CASE [Period] WHEN 6 THEN [Subject] END) AS P6,
        MAX(CASE [Period] WHEN 7 THEN [Subject] END) AS P7
    FROM @TIMETABLE
    GROUP BY [Day]
    

提交回复
热议问题