I'm struggling to pivot data in Microsoft SQL Server 2012. When I try to perform a pivot with varchar values, the script returns NULL values for all records. My code looks like this:
select [Identifier], [Geography Description], [Temperature Description], [Humidity Description], [Pressure Description]
from
(
select [Identifier], [AttributeID], [AttributeValue]
from [dbo].[StringAttributeValues]
) as A
PIVOT
(
max(AttributeID)
for [AttributeValue] in ([Geography Description], [Temperature Description], [Humidity Description], [Pressure Description])
) as B
I then followed the advice of the top most answer of this thread and modified my script. The end result was that my script still returns NULL values for every record across all columns.
select [Identifier], [1] as [Geography Description], [2] as [Temperature Description], [3] as [Humidity Description], [4] as [Pressure Description]
from
(
select [Identifier], [AttributeID], [AttributeValue]
from [dbo].[StringAttributeValues]
) as A
PIVOT
(
max(AttributeID)
for [AttributeValue] in ([1], [2], [3], [4])
) as B
Here is some code detailing my table structure and some sample values to work with:
create table [dbo].[StringAttributeValues]
(
[Identifier] int
,[AttributeID] int
,[AttributeValue] nvarchar(15)
)
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (1, 1, 'Mountains')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (2, 1, 'Coast')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (3, 1, 'Desert')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (4, 1, 'Jungle')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (5, 1, 'Plains')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (1, 2, 'Cold')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (2, 2, 'Warm')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (3, 2, 'Hot')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (4, 2, 'Hot')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (5, 2, 'Hot')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (1, 3, 'Dry')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (2, 3, 'Humid')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (3, 3, 'Dry')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (4, 3, 'Humid')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (5, 3, 'Dry')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (1, 4, 'High')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (2, 4, 'Low')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (3, 4, 'High')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (4, 4, 'Low')
insert into dbo.StringAttributeValues ([Identifier], [AttributeID], [AttributeValue]) values (5, 4, 'Low')
Can anyone please provide me with some insight as to why this is happening and how I fix it?
(It's a pretty simple procedure to right in languages like MATLAB, C#, Python, etc)
Thank you in advance.