Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>i got an answer but it's very tricky</p> <ol> <li>create a table for all your records</li> <li>count the records</li> <li>create a table with that much number of columns</li> <li>create a comma separated variable for the table which has records</li> <li>then split the comma separated variables into multiple columns</li> </ol> <p>here is the code</p> <pre> DECLARE @HEADDESC NVARCHAR(150) DROP TABLE #HEADS CREATE TABLE #HEADS ( ID INT IDENTITY ,HEADS NVARCHAR(150) ,NU INT ) DECLARE @NO INT; SET @NO = 0 DECLARE C1 CURSOR FOR ( SELECT HEADDESC FROM GMC.FEEHEAD_MASTER WHERE CODE = 'GF' AND HEADDESC &lt;> '') OPEN C1 FETCH NEXT FROM C1 INTO @HEADDESC WHILE @@FETCH_STATUS = 0 BEGIN PRINT @HEADDESC SET @NO = @NO+1 INSERT INTO #HEADS(HEADS,NU) VALUES(@HEADDESC,@NO) FETCH NEXT FROM C1 INTO @HEADDESC END --SELECT * FROM #HEADS CLOSE C1 DEALLOCATE C1 DECLARE @COLNO INT SET @COLNO = (SELECT COUNT(*) FROM #HEADS) DECLARE @COLUMNS VARCHAR(8000) SELECT @COLUMNS = COALESCE(@COLUMNS +','+ CAST(HEADS AS VARCHAR) , CAST(HEADS AS VARCHAR)) FROM #HEADS --GROUP BY HEADS DECLARE @value NVARCHAR(100) SET @value = ',1,STUDENTIDNO,STUDENTNAME,' SET @COLUMNS = @VALUE+@COLUMNS SET @COLNO = @COLNO+4 --SELECT @COLUMNS DROP TABLE #HEADSCOMMA CREATE TABLE #HEADSCOMMA(HEADS NVARCHAR(3000)) INSERT INTO #HEADSCOMMA VALUES (@COLUMNS) DROP TABLE #TEMP CREATE TABLE #TEMP(COL1 NVARCHAR(1000)) DECLARE @SQL NVARCHAR(MAX) DECLARE @COL NVARCHAR(1000) DECLARE @COL1 INT DECLARE @COLNAME NVARCHAR(1000) SET @COL1 = 2 SET @COL = 'COL' PRINT @COL1 --SET @COLNAME = @COL +CAST(@COL1 AS NVARCHAR(10)) WHILE @COL1 &lt; =@COLNO BEGIN SET @COLNAME = @COL +CAST(@COL1 AS NVARCHAR(100)) PRINT @COLNAME SET @SQL = 'ALTER TABLE #TEMP ADD '+@COLNAME+' NVARCHAR(100)' EXEC(@SQL) SET @COL1= @COL1+1 END --SELECT * FROM #HEADSCOMMA -- COMMA SEPERATED VALUES DECLARE @S VARCHAR(8000), @DATA VARCHAR(8000) --DROP TABLE #NORMALISEDTABLE --CREATE TABLE #NORMALISEDTABLE (HEADS NVARCHAR(200)) SELECT @S='' WHILE EXISTS (SELECT * FROM #HEADSCOMMA WHERE HEADS>@S) BEGIN SELECT @S=HEADS FROM #HEADSCOMMA WHERE HEADS>@S PRINT @S SELECT @DATA=''''+REPLACE(@S,',',''',''')+'''' PRINT @DATA INSERT INTO #TEMP EXEC('SELECT '+@DATA) END SELECT * FROM #temp </pre> <p>will give the records</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload