Tabela dinâmica do MS SQL Server com subconsulta na cláusula column
Tenho certeza que esta é uma técnica simples, embora eu não consiga encontrar uma resposta até agora!
eu tenho
TIMESTAMP | POINTNAME | VALUE
2012-10-10 16:00:00 AHU01 20
2012-10-10 16:00:00 AHU02 25
2012-10-10 16:00:15 AHU01 26
2012-10-10 16:00:15 AHU02 35
etc ... (por aproximadamente 800 PONTOS)
com muitos pointnames eu não quero listar cada um na cláusula 'IN' do pivot 'FOR' (como sintaxe dada abaixo) definição, mas gostaria de usar, talvez, uma subconsulta.
Então, o que eu gostaria é de todos os valores POINTNAME como colunas com A coluna TIMESTAMP AND VALUE, então eu vou ter um valor TIMESTAMP e muitas colunas com cada POINTNAME, existe apenas um valor por POINTNAME PER TIMESTAMP, então eu não preciso agregar nada então apenas escolha max afinal?
Algo como:
SELECT [TIMESTAMP] FROM ( SELECT * FROM POINT_TABLE)
PIVOT( Max[Value] FOR [POINTNAME] IN (SELECT DISTINCT [POINTNAME] FROM POINT_TABLE)
produziria
TIMESTAMP AHU01 AHU02
2012-10-10 16:00:00 20 25
2012-10-10 16:15:00 26 35
Eu percebo que provavelmente não é tão simples, mas espero que você consiga o que eu estou tentando alcançar?
SINTAXE DO PIVOT:
SELECT <non-pivoted column>,
[first pivoted column] AS <column name>,
[second pivoted column] AS <column name>,
...
[last pivoted column] AS <column name>
FROM
(<SELECT query that produces the data>)
AS <alias for the source query>
PIVOT
(
<aggregation function>(<column being aggregated>)
FOR
[<column that contains the values that will become column headers>]
IN ( [first pivoted column], [second pivoted column],
... [last pivoted column])
) AS <alias for the pivot table>
<optional ORDER BY clause>;