Author |
Topic |
tsaliki
Starting Member
19 Posts |
Posted - 2012-11-08 : 00:15:19
|
i have a table with records and code as follows:create table companieswithexec ( [companyname] varchar(100), [exec first Name 1] varchar(100), [exec last Name 1] varchar (100), [exec first Name 2] varchar(100), [exec last Name 2] varchar (100), [exec first Name 3] varchar(100), [exec last Name 3] varchar (100), [exec first Name 4] varchar(100), [exec last Name 4] varchar (100), [exec first Name 5] varchar(100), [exec last Name 5] varchar (100), [exec first Name 6] varchar(100), [exec last Name 6] varchar (100), [exec first Name 7] varchar(100), [exec last Name 7] varchar (100) ) insert into companieswithexec values ('sandisk corp','adams','paul','jacob','david','smith','alexander','russel','sasi','dravid','alex','ruth','kiran','geary','michael') insert into companieswithexec values ('altech corp','george','eric','john','shyam','scott','todd','richard','joseph','mark','andrew','strauss','neil','johnson','steve') insert into companieswithexec values ('xyz corp','mike','peter','saurav','jay','gary','james','lara','laxman','gilli','sachin','adam','waugh','mark','chris')the code is :DECLARE @COLNAME VARCHAR(50)DECLARE @SQL VARCHAR(max)DECLARE @COL_NBR VARCHAR(5)DECLARE @COMPANY VARCHAR(100)SET @COMPANY = 'sandisk corp,xyz corp,abc,altech corp ' SET @SQL = ''-----------DECLARE COL_CUR CURSOR FOR SELECT [NAME] FROM SYS.COLUMNS WHERE OBJECT_ID=OBJECT_ID('companieswithexec') AND [NAME] LIKE 'exec first Name%'OPEN COL_CUR FETCH NEXT FROM COL_CUR INTO @COLNAMEWHILE @@FETCH_STATUS = 0BEGIN SET @COL_NBR = (SELECT REPLACE(@COLNAME,'exec first Name ','')) SET @SQL = @SQL + (SELECT 'SELECT [companieswithexec].[companyname] as [company],[exec first Name ' + @COL_NBR + '] AS [exec first Name],[exec last Name ' + @COL_NBR + '] AS [exec last Name] FROM [companieswithexec] ')SET @SQL = @SQL + ' UNION 'FETCH NEXT FROM COL_CUR INTO @COLNAMEENDCLOSE COL_CURDEALLOCATE COL_CURSET @SQL = (SELECT REPLACE(@SQL + ' ',' UNION ',''))SET @SQL = ';WITH CTE ([companyname],[exec first Name],[exec last Name]) AS (' + @SQL + ')'SET @SQL = @SQL + 'SELECT * FROM CTE WHERE [companyname] IN (''' + replace(@COMPANY,',',''',''') + ''')' EXEC (@SQL)I wanted to store this output in another table.So i created other table as below and tried the below code but not working.So please help mecreate table testexecutives(firstname varchar(100),secondname varchar(100),companyname varchar(max))the code i tried is as follows:;with cte1(Companyname,[exec first name],[exec Last Name])as( DECLARE @COLNAME VARCHAR(50)DECLARE @SQL VARCHAR(max)DECLARE @COL_NBR VARCHAR(5)DECLARE @COMPANY VARCHAR(100)SET @COMPANY = 'sandisk corp,xyz corp,abc,altech corp ' SET @SQL = ''-----------DECLARE COL_CUR CURSOR FOR SELECT [NAME] FROM SYS.COLUMNS WHERE OBJECT_ID=OBJECT_ID('companieswithexec') AND [NAME] LIKE 'exec first Name%'OPEN COL_CUR FETCH NEXT FROM COL_CUR INTO @COLNAMEWHILE @@FETCH_STATUS = 0BEGIN SET @COL_NBR = (SELECT REPLACE(@COLNAME,'exec first Name ','')) SET @SQL = @SQL + (SELECT 'SELECT [companieswithexec].[companyname] as [company],[exec first Name ' + @COL_NBR + '] AS [exec first Name],[exec last Name ' + @COL_NBR + '] AS [exec last Name] FROM [companieswithexec] ')SET @SQL = @SQL + ' UNION 'FETCH NEXT FROM COL_CUR INTO @COLNAMEENDCLOSE COL_CURDEALLOCATE COL_CURSET @SQL = (SELECT REPLACE(@SQL + ' ',' UNION ',''))SET @SQL = ';WITH CTE ([companyname],[exec first Name],[exec last Name]) AS (' + @SQL + ')'SET @SQL = @SQL + 'SELECT * FROM CTE WHERE [companyname] IN (''' + replace(@COMPANY,',',''',''') + ''')' EXEC (@SQL))insert into sreenu (Companyname,firstname,LastName) valuesselect companyname,firstname,lastname from cte1but i am getting error.So can you please tell me how to store the the above output into another table.Thank you |
|
bandi
Master Smack Fu Yak Hacker
2242 Posts |
Posted - 2012-11-08 : 00:41:09
|
I modified some code...... Run below script once...create table companieswithexec ([companyname] varchar(100),[exec first Name 1] varchar(100),[exec last Name 1] varchar (100),[exec first Name 2] varchar(100),[exec last Name 2] varchar (100),[exec first Name 3] varchar(100),[exec last Name 3] varchar (100),[exec first Name 4] varchar(100),[exec last Name 4] varchar (100),[exec first Name 5] varchar(100),[exec last Name 5] varchar (100),[exec first Name 6] varchar(100),[exec last Name 6] varchar (100),[exec first Name 7] varchar(100),[exec last Name 7] varchar (100))insert into companieswithexec values ('sandisk corp','adams','paul','jacob','david','smith','alexander','russel','sasi','dravid','alex','ruth','kiran','geary','michael')insert into companieswithexec values ('altech corp','george','eric','john','shyam','scott','todd','richard','joseph','mark','andrew','strauss','neil','johnson','steve')insert into companieswithexec values ('xyz corp','mike','peter','saurav','jay','gary','james','lara','laxman','gilli','sachin','adam','waugh','mark','chris')create table testexecutives(firstname varchar(100),secondname varchar(100),companyname varchar(max))--the code is :DECLARE @COLNAME VARCHAR(50)DECLARE @SQL VARCHAR(max)DECLARE @COL_NBR VARCHAR(5)DECLARE @COMPANY VARCHAR(100)DECLARE @tempTab varchar(50) = 'testexecutives'SET @COMPANY = 'sandisk corp,xyz corp,abc,altech corp ' SET @SQL = ''-----------DECLARE COL_CUR CURSOR FOR SELECT [NAME] FROM SYS.COLUMNS WHERE OBJECT_ID=OBJECT_ID('companieswithexec') AND [NAME] LIKE 'exec first Name%'OPEN COL_CUR FETCH NEXT FROM COL_CUR INTO @COLNAMEWHILE @@FETCH_STATUS = 0BEGIN SET @COL_NBR = (SELECT REPLACE(@COLNAME,'exec first Name ','')) SET @SQL = @SQL + (SELECT 'SELECT [companieswithexec].[companyname] as [company],[exec first Name ' + @COL_NBR + '] AS [exec first Name],[exec last Name ' + @COL_NBR + '] AS [exec last Name] FROM [companieswithexec] UNION ')FETCH NEXT FROM COL_CUR INTO @COLNAMEENDCLOSE COL_CURDEALLOCATE COL_CUR--PRINT @sqlSET @SQL = ';WITH CTE ([companyname],[exec first Name],[exec last Name]) AS (' + left(@SQL, len(@sql) - 6) + ')'SET @SQL = @SQL + ' INSERT INTO '+ @tempTab + ' OUTPUT INSERTED.* SELECT * FROM CTE WHERE [companyname] IN (''' + replace(@COMPANY,',',''',''') + ''')' select @SQLEXEC (@SQL)SELECT * FROM testexecutives--Chandu |
|
|
|
|
|