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)
 change rows to columns

Author  Topic 

muralidaran_r
Starting Member

13 Posts

Posted - 2008-08-21 : 05:50:23
I have table like this
ID Style Cap
468 Theatre 350
468 Classroom 160
468 Boardroom 50
468 Banqueting 230
468 Cabaret 150
468 Dinner 230
468 Drinks 400

my required output:
ID Theatre Classroom Boardroom Banqueting Cabaret Dinner Drinks
468 350 160 50 230 150 230 400

please help

Transact Charlie
Master Smack Fu Yak Hacker

3451 Posts

Posted - 2008-08-21 : 06:11:56
Are Theatre, Classroom, Boardroom, Banqueting, Cabaret, Dinner, Drinks the only columns that can exists (with id and the cost?) or are the divisions dynamic.

-------------
Charlie
Go to Top of Page

madhivanan
Premature Yak Congratulator

22864 Posts

Posted - 2008-08-21 : 06:17:47
If values are static

select id,pvt.Theatre,Classroom,Boardroom,Banqueting,Cabaret,Dinner,Drinks
from
(
select * from table
) as p
pivot
(
max(cap) for style in (Theatre,Classroom,Boardroom,Banqueting,Cabaret,Dinner,Drinks )
) as pvt


Madhivanan

Failing to plan is Planning to fail
Go to Top of Page

Transact Charlie
Master Smack Fu Yak Hacker

3451 Posts

Posted - 2008-08-21 : 06:21:44
Damn your quick fingers (and mind) madhivanan!

old school method, madhivanan's is better....

DECLARE @tablea TABLE (
[Id] INT
, [Style] VARCHAR(50)
, [Cap] INT
)

INSERT @tablea
SELECT 468, 'Theatre', 350
UNION SELECT 468, 'Classroom', 160
UNION SELECT 468, 'Boardroom', 50
UNION SELECT 468, 'Banqueting', 230
UNION SELECT 468, 'Cabaret', 150
UNION SELECT 468, 'Dinner', 230
UNION SELECT 468, 'Drinks', 400

SELECT
[id] AS [Id]
, SUM(CASE [Style] WHEN 'Theatre' THEN [cap] ELSE 0 END) AS Theater
, SUM(CASE [Style] WHEN 'Classroom' THEN [cap] ELSE 0 END) AS Classroom
, SUM(CASE [Style] WHEN 'Boardroom' THEN [cap] ELSE 0 END) AS Boardroom
, SUM(CASE [Style] WHEN 'Banqueting' THEN [cap] ELSE 0 END) AS Banqueting
, SUM(CASE [Style] WHEN 'Cabaret' THEN [cap] ELSE 0 END) AS Cabaret
, SUM(CASE [Style] WHEN 'Dinner' THEN [cap] ELSE 0 END) AS Dinner
, SUM(CASE [Style] WHEN 'Drinks' THEN [cap] ELSE 0 END) AS Drinks
FROM
@tablea
GROUP BY
[Id]






-------------
Charlie
Go to Top of Page
   

- Advertisement -