I'm trying to figure out how to produce this result in SQL using pivot table Sorted by SubID
| units | Sub | SubCode | AM | PM | 
|---|---|---|---|---|
| 3 | Math | M2201 | Monday / 7:00AM-8:00AM | Tuesday / 1:00PM-2:00PM | 
| 3 | Science | S2203 | Monday / 9:00AM-10:00AM | Tuesday / 3:00PM-4:00PM | 
| 3 | Comp (lab) | C2203 | Friday / 9:00AM-10:00AM | Wednesday / 3:00PM-4:00PM | 
| 2 | Comp (lec) | C2203 | Thursday / 9:00AM-10:00AM Friday / 7:00AM-8:00AM | Tuesday / 3:00PM-4:00PM | 
Originally, I have 3 tables where I pull out data.
table SetSub
| ssID | AY | Prog | YLev | Sem | SubCode | 
|---|---|---|---|---|---|
| 1 | 2022-2023 | Intermediate | 3 | 2 | M2201 | 
| 2 | 2022-2023 | Intermediate | 3 | 2 | S2203 | 
| 2 | 2022-2023 | Intermediate | 3 | 2 | C2203 | 
table Sched
| schedID | Prog | Sem | SubCode | Sub | Units | Shift | SubType | Day | Sched | isLecLab | 
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Intermediate | 2 | M2201 | Math | 3 | AM | Lec | Monday | 7:00AM-8:00AM | 0 | 
| 2 | Intermediate | 2 | M2201 | Math | 3 | PM | Lec | Tuesday | 1:00PM-2:00PM | 0 | 
| 3 | Intermediate | 2 | S2203 | Science | 3 | AM | Lec | Monday | 9:00AM-10:00AM | 0 | 
| 4 | Intermediate | 2 | S2203 | Science | 3 | PM | Lec | Tuesday | 3:00PM-4:00PM | 0 | 
| 5 | Intermediate | 2 | C2203 | Comp | 2 | AM | Lec | Thursday | 9:00AM-10:00AM | 1 | 
| 6 | Intermediate | 2 | C2203 | Comp | 2 | AM | Lec | Friday | 7:00AM-8:00AM | 1 | 
| 7 | Intermediate | 2 | C2203 | Comp | 2 | PM | Lec | Tuesday | 3:00PM-4:00PM | 1 | 
| 8 | Intermediate | 2 | C2203 | Comp | 3 | AM | Lab | Friday | 9:00AM-10:00AM | 1 | 
| 9 | Intermediate | 2 | C2203 | Comp | 3 | PM | Lab | Wednesday | 3:00PM-4:00PM | 1 | 
table Subjects
| subid | Sub | SubCode | Units | isLecLab | 
|---|---|---|---|---|
| 1 | Math | M2201 | 3 | 0 | 
| 2 | Science | S2203 | 3 | 1 | 
| 3 | Comp | C2203 | 5 | 0 | 
Added an image since table get messed up upon saving the post
But created a new table for this.
| subid | units | sub | UserCode | Shift | Sched | 
|---|---|---|---|---|---|
| 1 | 3 | Math | M2201 | AM | Monday / 7:00AM-8:00AM | 
| 1 | 3 | Math | M2201 | PM | Tuesday / 1:00PM-2:00PM | 
| 2 | 3 | Science | S2203 | AM | Monday / 9:00AM-10:00AM | 
| 2 | 3 | Science | S2203 | PM | Tuesday / 3:00PM-4:00PM | 
| 3 | 3 | Comp (lab) | C2203 | AM | Friday / 9:00AM-10:00AM | 
| 3 | 2 | Comp (lab) | C2203 | PM | Wednesday / 3:00PM-4:00PM | 
| 3 | 3 | Comp (lec) | C2203 | AM | Thursday / 9:00AM-10:00AM | 
| 3 | 2 | Comp (lec) | C2203 | PM | Tuesday / 3:00PM-4:00PM | 
| 3 | 2 | Comp (lec) | C2203 | PM | Friday / 7:00AM-8:00AM | 
I tried several queries and the closest I've got is this
| units | Sub | Code | AM | PM | 
|---|---|---|---|---|
| 3 | Math | M2201 | Monday / 7:00AM-8:00AM | Tuesday / 1:00PM-2:00PM | 
| 3 | Science | S2203 | Monday / 9:00AM-10:00AM | Tuesday / 3:00PM-4:00PM | 
| 3 | Comp (lab) | C2203 | Thursday / 9:00AM-10:00AM | Tuesday / 3:00PM-4:00PM | 
| 3 | Comp (lab) | C2203 | Friday / 9:00AM-10:00AM | Wednesday / 3:00PM-4:00PM | 
| 2 | Comp (lec) | C2203 | Thursday / 9:00AM-10:00AM | Tuesday / 3:00PM-4:00PM | 
| 2 | Comp (lec) | C2203 | Friday / 9:00AM-10:00AM | Wednesday / 3:00PM-4:00PM | 
Second data for AM of comp (lec) didn't appear. Here's the code I've tried
select a.usercode, a.sub, a.Units, a.am, b.pm, a.Schedid from 
    (select * from 
        (select distinct subid, usercode, sub, units, shift, sched from Table1 where shift= 'am') as src 
        pivot (max(sched) for shift in ("am")) as pvt ) as A 
inner join 
    (select * from 
        (select distinct subid, usercode, sub, units, shift, sched from table1 where shift= 'pm') as src2 
        pivot (max(sched) for shift in ("pm")) as pvt2 ) as B on a.shift= b.shift
 
     
    