Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/08/2014, 07:34
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: Filas en Columnas con Pivote SQL Server 2008

un query dinamico amigo con un query dinamico obtienes lo que necesitas, pero como se que no puedes hacerlo ni vas a tener la delicadeza de buscar como aqui te dejo como hacerlo:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. dato1 VARCHAR(20),
  4. dato2 VARCHAR(20),
  5. dato3 VARCHAR(20),
  6. dato4 VARCHAR(20),
  7. dato5 datetime,
  8. dato6 INT
  9. )
  10.  
  11.  
  12. INSERT INTO #temp VALUES ('Form','V1.3','Clockspring','AB','2014-06-23',9)
  13. INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-05-05',4)
  14. INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-05-06',7)
  15. INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-09',5)
  16. INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-12',2)
  17. INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-13',6)
  18. INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-14',7)
  19. INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-15',20)
  20. INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-16',100)
  21.  
  22.  
  23.  
  24. SELECT DISTINCT dato5 AS fecha,IDENTITY(INT,1,1) AS rn INTO #temp2 FROM #temp
  25.  
  26.  
  27. DECLARE @x INT
  28. DECLARE @query Nvarchar(MAX)
  29. DECLARE @fechas Nvarchar(MAX)
  30. SET @x=1
  31. SET @fechas=''
  32. while @x<=(SELECT COUNT(*) FROM #temp)
  33. BEGIN
  34. SET @fechas= @fechas + (SELECT '[' + CONVERT(VARCHAR(20),fecha,110) + ']' FROM #temp2 WHERE rn=@x) + ','
  35. SET @x=@x+1
  36. END
  37.  
  38. SET @fechas=SUBSTRING(@fechas,1,len(@fechas)-1)
  39.  
  40. SET @query='select dato1,dato2,dato3,dato4, ' + @fechas +
  41. ' from
  42. (
  43. select dato1,dato2,dato3,dato4,dato5,dato6 from #temp
  44. ) as sourcetable
  45. pivot
  46. (
  47. max(dato6) for dato5 in ( ' + @fechas + ')
  48. ) as pivote'
  49.  
  50. EXEC sp_executesql @query
  51. DROP TABLE #temp2

Este query funciona para N columnas
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me