Skip to content
Advertisement

Unpivot Table for Multiple Table

I am facing a problem in Unpivot the table.

My table structure is

Code     Level1Name Level1Email Level2Name Level2Email Level3Name Level3 Email
1         aa        aa@b.com     bb          bb@b.com     cc        cc@c.com

I need to convert this columns into Rows and need output like below

Code  Info    Level1       Level2        Level3 
1     Name     aa           bb            cc
1     Email    aa@b.com    bb@b.com       cc@c.com 

Advertisement

Answer

I would use apply

select t.code, v.*
from t cross apply
     (values ('Name', t.Level1Name, t.Level2Name, t.Level1Name, Level3Name),
             ('Email', t.Level1Email, t.Level1Email, t.Level2Email, Level3Email)
     ) v(info, level1, level2, level3);
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement