I’ve this table with the following data:
ID | Data1 | Data2 | Data3 | Data4 | Data5 | Data6 | RandomInformation |
---|---|---|---|---|---|---|---|
1 | Test1 | Test2 | Test3 | Information1 | |||
2 | Test5 | Test6 | Test7 | Information2 | |||
3 | Test8 | Test9 | Test10 | Test11 | Information3 |
The resultant table i want should be as below:
ID | Data | RandomInformation |
---|---|---|
1 | Data1 | Information1 |
1 | Data3 | Information1 |
1 | Data5 | Information1 |
2 | Data2 | Information2 |
2 | Data4 | Information2 |
2 | Data6 | Information2 |
3 | Data1 | Information3 |
3 | Data2 | Information3 |
3 | Data5 | Information3 |
3 | Data6 | Information3 |
Can someone please help me out with this query?
Advertisement
Answer
You can use a CROSS APPLY
in concert with VALUES
to UNPIVOT
your data
x
Select A.ID
,B.Data
,A.RandomInformation
From YourTable A
Cross Apply ( values ('Data1',Data1)
,('Data2',Data2)
,('Data3',Data3)
,('Data4',Data4)
,('Data5',Data5)
,('Data6',Data6)
) B(Data,Value)
Where B.Value is not null