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 originalCREATE TABLE #temp
(
dato1 VARCHAR(20),
dato2 VARCHAR(20),
dato3 VARCHAR(20),
dato4 VARCHAR(20),
dato5 datetime,
dato6 INT
)
INSERT INTO #temp VALUES ('Form','V1.3','Clockspring','AB','2014-06-23',9)
INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-05-05',4)
INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-05-06',7)
INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-09',5)
INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-12',2)
INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-13',6)
INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-14',7)
INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-15',20)
INSERT INTO #temp VALUES ('Function','V1.3','Clockspring','AB','2014-06-16',100)
SELECT DISTINCT dato5 AS fecha,IDENTITY(INT,1,1) AS rn INTO #temp2 FROM #temp
DECLARE @x INT
DECLARE @query Nvarchar(MAX)
DECLARE @fechas Nvarchar(MAX)
SET @x=1
SET @fechas=''
while @x<=(SELECT COUNT(*) FROM #temp)
BEGIN
SET @fechas= @fechas + (SELECT '[' + CONVERT(VARCHAR(20),fecha,110) + ']' FROM #temp2 WHERE rn=@x) + ','
SET @x=@x+1
END
SET @fechas=SUBSTRING(@fechas,1,len(@fechas)-1)
SET @query='select dato1,dato2,dato3,dato4, ' + @fechas +
' from
(
select dato1,dato2,dato3,dato4,dato5,dato6 from #temp
) as sourcetable
pivot
(
max(dato6) for dato5 in ( ' + @fechas + ')
) as pivote'
EXEC sp_executesql @query
DROP TABLE #temp2
Este query funciona para N columnas