Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/02/2014, 10:25
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Cambiar titulo de columna a Fila

mmm creo que se puede hacer desde la base de datos, podria quedar de esta manera:
Código SQL:
Ver original
  1. CREATE TABLE new_test(
  2. id INT,
  3. nombre VARCHAR(20),
  4. apellido VARCHAR(30)
  5. )
  6.  
  7. CREATE TABLE #resultado(
  8. columna1 VARCHAR(20),
  9. columna2 VARCHAR(30)
  10. )
  11.  
  12. INSERT INTO new_test VALUES (1,'yo','tu')
  13. INSERT INTO new_test VALUES (2,'el','nos')
  14.  
  15.  
  16.  
  17. SELECT *,IDENTITY(INT,1,1) AS rn INTO #temp2 FROM new_test
  18.  
  19. DECLARE @x INT
  20. SET @x=1
  21. while @x<=(SELECT COUNT(*) FROM #temp2)
  22. BEGIN
  23. INSERT INTO #resultado VALUES ('id',(SELECT CONVERT(VARCHAR(20),id) FROM #temp2 WHERE rn=@x))
  24. INSERT INTO #resultado VALUES ('nombre',(SELECT nombre FROM #temp2 WHERE rn=@x))
  25. INSERT INTO #resultado VALUES ('apellido',(SELECT apellido FROM #temp2 WHERE rn=@x))
  26. SET @x=@x+1
  27. END
  28.  
  29. 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 original
  1. CREATE TABLE new_test(
  2. id VARCHAR(20),
  3. nombre VARCHAR(20),
  4. apellido VARCHAR(30),
  5. direccion VARCHAR(100)
  6. )
  7.  
  8.  
  9. CREATE TABLE ##resultado(
  10. columna1 VARCHAR(20),
  11. columna2 VARCHAR(30)
  12. )
  13.  
  14. INSERT INTO new_test VALUES ('1','yo','tu','mi direccion')
  15. INSERT INTO new_test VALUES ('2','el','nos','otra direccion')
  16.  
  17. 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')
  18.  
  19. SELECT *,IDENTITY(INT,1,1) AS rn INTO ##temp2 FROM new_test
  20.  
  21.  
  22. DECLARE @x INT
  23. DECLARE @y INT
  24. DECLARE @query nvarchar(MAX)
  25. SET @x=1
  26.  
  27. while @x<=(SELECT COUNT(*) FROM ##temp2)
  28. BEGIN
  29. SET @y=1
  30.     while @y<=(SELECT COUNT(*) FROM ##temp)
  31.         BEGIN
  32.             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) + '))'         
  33.             EXECUTE sp_executesql @query           
  34.             SET @y=@y+1
  35.        END
  36. SET @x=@x+1
  37. END
  38.  
  39. SELECT * FROM ##resultado
  40.  
  41.  
  42. DROP TABLE ##temp
  43. DROP TABLE ##temp2
  44. DROP TABLE ##resultado
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 05/02/2014 a las 10:37