August 25, 2005 at 4:33 am
CREATE table Table1
(
Col1 varchar(100),
Col2 varchar(100),
Col3 varchar(100)
)
INSERT INTO Table1
SELECT 'Data1','Data2','Data3'
UNION ALL
SELECT 'Data4','Data5','Data6'
UNION ALL
SELECT 'Data7','Data8','Data9'
SELECT * FROM Table1
Thanks,
Vivek
/**A strong positive mental attitude will create more miracles than any wonder drug**/
August 25, 2005 at 4:44 am
ACTUAL | |||
Col1 | Col2 | Col3 | |
1 | Data1 | Data2 | Data3 |
2 | Data4 | Data5 | Data6 |
3 | Data7 | Data8 | Data9 |
DESIRED | |||
Col1 | Col2 | Col3 | |
1 | Data1 | Data4 | Data7 |
2 | Data2 | Data5 | Data8 |
3 | Data3 | Data6 | Data9 |
Regards,
vivek
/**A strong positive mental attitude will create more miracles than any wonder drug**/
August 25, 2005 at 5:33 am
Have you searched this site for information? This is a frequently asked question and there are several EXCELLENT ways of doing this already posted....
Good Hunting!
AJ Ahrens
webmaster@kritter.net
August 25, 2005 at 5:54 am
Hunting has been done long back - 2 years before. If you don't mind, kindly provide the link if already posted.
Well, hunt me if you can..?
Vivek - HUB of Hunting Information.
/**A strong positive mental attitude will create more miracles than any wonder drug**/
August 25, 2005 at 7:41 am
Go to the search page and type in "Cross Tab". You will get more hits than I could post...
I wasn't born stupid - I had to study.
August 25, 2005 at 9:22 am
You can test the following script
drop table table1
drop table tableTmp
drop table table2
CREATE table Table1
(
Col1 varchar(100),
Col2 varchar(100),
Col3 varchar(100)
)
insert table1 values ('Data1','Data2','Data3')
insert table1 values ('Data4','Data5','Data6')
insert table1 values ('Data7','Data8','Data9')
declare @nRow int
select @nRow = count(*) from Table1
declare @nCol int
select @nCol = max(colid) from syscolumns where id = object_id('table1')
print @nRow
declare @ddl varchar(8000)
set @ddl = 'CREATE table TableTmp(Col varchar(100), RowNum int identity(1,1))
CREATE table table2(RowNum int identity(1,1),'
declare @loop int
set @loop = 1
while @loop <= @nRow
begin
set @ddl = @ddl + 'col' + convert(varchar(3), @loop) + ' varchar(100),'
set @loop = @loop + 1
end
set @ddl = @ddl + ')'
set @ddl = replace(@ddl,',)',')')
exec(@ddl)
Declare @loopIn int
Declare @IntToChar varchar(3)
Declare @IntToCharIn varchar(3)
set @loop = 1
while @loop <= @nCol
begin
set @IntToChar = convert(varchar(3), @loop)
--exec('select col'+ @IntToChar + ' from Table1')
exec('insert tableTmp(Col) select col'+ @IntToChar + ' from Table1')
--exec('select * from tableTmp')
set @loopIn = 1
while @loopIn <= @nRow
begin
set @IntToCharIn = convert(varchar(3), @loopIn)
if @loopIn = 1
exec('insert table2(col' + @IntToCharIn + ') select col from tableTmp where rownum = ' + @IntToCharIn)
else
exec('update table2 set col' + @IntToCharIn + ' = b.col from table2 a , tableTmp b where a.rownum = ' + @IntToChar + ' and b.rownum = ' + @IntToCharIn)
set @loopIn = @loopIn + 1
end
exec('truncate table tableTmp')
set @loop = @loop + 1
end
alter table Table2 drop column rownum
select * from Table1
select * from table2
August 26, 2005 at 2:30 am
I give you full 100 out of 100. Thank you.
Vivek
/**A strong positive mental attitude will create more miracles than any wonder drug**/
Viewing 7 posts - 1 through 6 (of 6 total)
You must be logged in to reply to this topic. Login to reply