Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2005 Forums
 Transact-SQL (2005)
 Pivot Query

Author  Topic 

rwlopez
Yak Posting Veteran

80 Posts

Posted - 2007-01-15 : 17:25:37
I am trying to solve a problem with a pivot query that is very similar to the one illustrated below. The first set of code works and the second does not. The only difference is in the values being pivoted on. It seems that the pivot values cannot be a number which I do not understand since the number is being treated as a string. Has anyone experienced this before?


declare @SalesQuarter table
(
SalesYear int,
SalesQuarter char(2),
SalesAmount float
)

insert into @SalesQuarter values(2006, 'Q1', 70)
insert into @SalesQuarter values(2006, 'Q2', 150)
insert into @SalesQuarter values(2006, 'Q3', 20)
insert into @SalesQuarter values(2006, 'Q4', 20)

select * from @SalesQuarter
pivot
(
sum(SalesAmount)
for SalesQuarter
in (Q1, Q2, Q3, Q4)
) as Q

----------------------------------------------------------------------------------------

declare @SalesQuarter table
(
SalesYear int,
SalesQuarter char(2),
SalesAmount float
)

insert into @SalesQuarter values(2006, '1', 70)
insert into @SalesQuarter values(2006, '2', 150)
insert into @SalesQuarter values(2006, '3', 20)
insert into @SalesQuarter values(2006, '4', 20)

select * from @SalesQuarter
pivot
(
sum(SalesAmount)
for SalesQuarter
in (1, 2, 3, 4)
) as Q

snSQL
Master Smack Fu Yak Hacker

1837 Posts

Posted - 2007-01-15 : 18:21:02
The values are used as column names so put them in brackets [] and it will work fine

declare @SalesQuarter table
(
SalesYear int,
SalesQuarter char(2),
SalesAmount float
)

insert into @SalesQuarter values(2006, '1', 70)
insert into @SalesQuarter values(2006, '2', 150)
insert into @SalesQuarter values(2006, '3', 20)
insert into @SalesQuarter values(2006, '4', 20)

select * from @SalesQuarter
pivot
(
sum(SalesAmount)
for SalesQuarter
in ([1], [2], [3], [4])
) as Q

Go to Top of Page

rwlopez
Yak Posting Veteran

80 Posts

Posted - 2007-01-15 : 18:29:29
Thanks. That’s what I was looking for.
Go to Top of Page
   

- Advertisement -