Archive
Archive for August 17, 2010
Convert multiple Rows into a single column
August 17, 2010
2 comments
Just replied an answer on a SQL forum (http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=148860), so thought to post this as well for future reference.
How will you output the following record set:
123456788 City 399.99
123456788 County 499.99
123456788 Flood 299.99
123456788 Hazzard 199.99
123456789 City 333.99
123456789 County 444.99
123456789 Flood 222.99
123456789 Hazzard 111.99
... into following pattern:
id Hazzard Flood City County
123456788 199.99 299.99 399.99 499.99
123456789 111.99 222.99 333.99 444.99
The following query will do it and convert the rows into columns:
select 123456788 as id, 'Hazzard' as des, 199.99 as val into #tempTable union select 123456788, 'Flood', 299.99 union select 123456788, 'City', 399.99 union select 123456788, 'County', 499.99 union select 123456789, 'Hazzard', 111.99 union select 123456789, 'Flood', 222.99 union select 123456789, 'City', 333.99 union select 123456789, 'County', 444.99 select * from #tempTable select a.id as id, a.val as Hazzard, b.val as Flood, c.val as City, d.val as County from #tempTable a,#tempTable b,#tempTable c, #tempTable d where a.id=b.id and b.id=c.id and c.id=d.id and a.des='Hazzard' and b.des='Flood' and c.des='City' and d.des='County' drop table #tempTable
The above select code is with a simple old style where clause with multiple tables joining. The code could be also converted to self-joins.
Categories: JOINS, SQL Tips
Convert Rows to Columns, SELF JOIN