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
 General SQL Server Forums
 New to SQL Server Programming
 Transposing

Author  Topic 

JHYanero
Starting Member

1 Post

Posted - 2014-06-08 : 19:52:44
I have the following problem:

Original table SalesbyItem

ItemNbr Store Week1 Week2 Week3 Week4
1767522 1 0.48 0.53 0.53 0.48
1767522 2 1.61 1.79 1.79 1.61
1767522 3 0.26 0.29 0.29 0.26

I need to create a new table SalesPCTbyWeek

ItemNbr Store Week Percent
1767522 1 Week1 0.48
1767522 2 Week1 1.61
1767522 3 Week1 0.26
1767522 1 Week2 0.53
1767522 2 Week2 1.79
1767522 3 Week2 0.29
1767522 1 Week3 0.53
1767522 2 Week3 1.79
1767522 3 Week3 0.29
1767522 1 Week4 0.48
1767522 2 Week4 1.61
1767522 3 Week4 0.26

Note that Week data is the actual field name?

can anyone help with this problem?


Joseph H. Yanero

bitsmed
Aged Yak Warrior

545 Posts

Posted - 2014-06-08 : 20:18:43
Maybe this:
select *
into SalesPCTbyWeek
from (select ItemNbr
,Store
,'Week1' as Week
,Week1 as Percent
from SalesbyItem
union all
select ItemNbr
,Store
,'Week2' as Week
,Week2 as Percent
from SalesbyItem
union all
select ItemNbr
,Store
,'Week3' as Week
,Week3 as Percent
from SalesbyItem
union all
select ItemNbr
,Store
,'Week4' as Week
,Week4 as Percent
from SalesbyItem
) as a
Go to Top of Page

MuralikrishnaVeera
Posting Yak Master

129 Posts

Posted - 2014-06-09 : 01:37:07
Logically what you need is UNPIVOT

CREATE TABLE #Test(ItemNbr int,Store int,Week1 decimal(5,2),Week2 decimal(5,2),Week3 decimal(5,2),Week4 decimal(5,2))
INSERT INTO #Test
SELECT 1767522,1,0.48,0.53,0.53,0.48 UNION ALL
SELECT 1767522,2,1.61,1.79,1.79,1.61 UNION ALL
SELECT 1767522,3,0.26,0.29,0.29,0.26

--SELECT * FROM #Test

SELECT ItemNbr,Store,[Week],[Percent]
FROM (SELECT CAST(ItemNbr as varchar(50)) AS ItemNbr
,CAST(Store as varchar(50)) AS Store
,CAST(Week1 as varchar(50)) AS Week1
,CAST(Week2 as varchar(50)) AS Week2
,CAST(Week3 as varchar(50)) AS Week3
,CAST(Week4 as varchar(50)) AS Week4
FROM #test) s
UNPIVOT([Percent] FOR [Week] IN ([Week1],[Week2],[Week3],[Week4]))u
ORDER BY [Week],Store




---------------
Murali Krishna

You live only once ..If you do it right once is enough.......
Go to Top of Page
   

- Advertisement -