MS SQL Server-Pivot-Tabelle mit Unterabfrage in Spaltenklausel

Ich bin mir sicher, dass dies eine einfache Technik ist, obwohl ich bisher keine Antwort gefunden habe!

ich habe

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 ... (für ca. 800 PUNKTNAMEN)

Mit vielen Punktnamen möchte ich nicht jeden in der 'IN'-Klausel der Pivot-Definition' FOR '(als Syntax unten angegeben) auflisten, sondern möchte vielleicht eine Unterabfrage verwenden.

Also, was ich möchte, sind alle POINTNAME-Werte als Spalten mit einer TIMESTAMP AND VALUE-Spalte, also bekomme ich einen TIMESTAMP-Wert und viele Spalten mit jedem POINTNAME, es gibt nur einen Wert pro POINTNAME PRO TIMESTAMP, so dass ich nicht aggregieren muss irgendetwas also trotzdem max wählen?

So etwas wie:

SELECT [TIMESTAMP] FROM ( SELECT * FROM POINT_TABLE)
PIVOT( Max[Value] FOR [POINTNAME] IN (SELECT DISTINCT [POINTNAME] FROM POINT_TABLE)

würde produzieren-

   TIMESTAMP              AHU01          AHU02
 2012-10-10 16:00:00        20             25
 2012-10-10 16:15:00        26             35

Mir ist klar, dass es wahrscheinlich nicht so einfach ist, aber hoffentlich kriegst du, was ich versuche zu erreichen?

PIVOT SYNTAX:

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>;

Antworten auf die Frage(1)

Ihre Antwort auf die Frage