mmm creo que se puede hacer desde la base de datos, podria quedar de esta manera:
Código SQL:
Ver originalCREATE TABLE new_test(
id INT,
nombre VARCHAR(20),
apellido VARCHAR(30)
)
CREATE TABLE #resultado(
columna1 VARCHAR(20),
columna2 VARCHAR(30)
)
INSERT INTO new_test VALUES (1,'yo','tu')
INSERT INTO new_test VALUES (2,'el','nos')
SELECT *,IDENTITY(INT,1,1) AS rn INTO #temp2 FROM new_test
DECLARE @x INT
SET @x=1
while @x<=(SELECT COUNT(*) FROM #temp2)
BEGIN
INSERT INTO #resultado VALUES ('id',(SELECT CONVERT(VARCHAR(20),id) FROM #temp2 WHERE rn=@x))
INSERT INTO #resultado VALUES ('nombre',(SELECT nombre FROM #temp2 WHERE rn=@x))
INSERT INTO #resultado VALUES ('apellido',(SELECT apellido FROM #temp2 WHERE rn=@x))
SET @x=@x+1
END
SELECT * FROM #resultado
digo tomando en cuenta que los datos que necesitas y los nombres de columnas son fijos :)
ahora si quieres hacerlo para cualquier tabla y cualquier numero de campos
Código SQL:
Ver originalCREATE TABLE new_test(
id VARCHAR(20),
nombre VARCHAR(20),
apellido VARCHAR(30),
direccion VARCHAR(100)
)
CREATE TABLE ##resultado(
columna1 VARCHAR(20),
columna2 VARCHAR(30)
)
INSERT INTO new_test VALUES ('1','yo','tu','mi direccion')
INSERT INTO new_test VALUES ('2','el','nos','otra direccion')
SELECT name,IDENTITY(INT,1,1) AS rn INTO ##temp FROM sys.all_columns WHERE object_id IN (SELECT object_id FROM sys.all_objects WHERE TYPE='U' AND name='new_test')
SELECT *,IDENTITY(INT,1,1) AS rn INTO ##temp2 FROM new_test
DECLARE @x INT
DECLARE @y INT
DECLARE @query nvarchar(MAX)
SET @x=1
while @x<=(SELECT COUNT(*) FROM ##temp2)
BEGIN
SET @y=1
while @y<=(SELECT COUNT(*) FROM ##temp)
BEGIN
SET @query='insert into ##resultado values (' + CHAR(39) + (SELECT name FROM ##temp WHERE rn=@y) + CHAR(39) + ',(select ' + (SELECT name FROM ##temp WHERE rn=@y) + ' from ##temp2 where rn=' + CONVERT(VARCHAR(20),@x) + '))'
EXECUTE sp_executesql @query
SET @y=@y+1
END
SET @x=@x+1
END
SELECT * FROM ##resultado
DROP TABLE ##temp
DROP TABLE ##temp2
DROP TABLE ##resultado