How to pivot rows into columns (custom pivoting)

前端 未结 6 1837
夕颜
夕颜 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

    You could probably do it with the PIVOT function, but I prefer the old school method:

    SELECT
        dy,
        MAX(CASE WHEN period = 1 THEN subj ELSE NULL END) AS P1,
        MAX(CASE WHEN period = 2 THEN subj ELSE NULL END) AS P2,
        MAX(CASE WHEN period = 3 THEN subj ELSE NULL END) AS P3,
        MAX(CASE WHEN period = 4 THEN subj ELSE NULL END) AS P4,
        MAX(CASE WHEN period = 5 THEN subj ELSE NULL END) AS P5,
        MAX(CASE WHEN period = 6 THEN subj ELSE NULL END) AS P6,
        MAX(CASE WHEN period = 7 THEN subj ELSE NULL END) AS P7
    FROM
        Classes
    GROUP BY
        dy
    ORDER BY
        CASE dy
            WHEN 'Mon' THEN 1
            WHEN 'Tue' THEN 2
            WHEN 'Wed' THEN 3
            WHEN 'Thu' THEN 4
            WHEN 'Fri' THEN 5
            WHEN 'Sat' THEN 6
            WHEN 'Sun' THEN 7
            ELSE 8
        END
    
    • I changed some column names to avoid reserved words

提交回复
热议问题