これは簡単な手法ですが、これまでのところ答えは見つかりませんでした。MS SQL Serverピボットテーブルのサブクエリがカラム節にある
私が持っている
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
等...私は 'FOR' ピボットの 'IN' と句に各1を一覧表示したくない多くのpointnamesと
(約800 POINTNAMES用) (以下の構文で)定義されていますが、サブクエリを使用したいと考えています。
POINTNAMEの値はすべてTIMESTAMPとVALUE列の列として表示されますので、1つのTIMESTAMP値と各POINTNAMEの多数の列を取得します。POINTNAME PER TIMESTAMPごとに1つの値しかありません。何も集約する必要はありません。以下のような
何か:
SELECT [TIMESTAMP] FROM (SELECT * FROM POINT_TABLE)
PIVOT(Max[Value] FOR [POINTNAME] IN (SELECT DISTINCT [POINTNAME] FROM POINT_TABLE)
が、私はそれはおそらくありません。このシンプルで実現うまくいけば、あなたは私が達成しようとしているものを手に入れる
TIMESTAMP AHU01 AHU02
2012-10-10 16:00:00 20 25
2012-10-10 16:15:00 26 35
をproduce-でしょうか?
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>;
、動的SQLを使用する必要がありますが壊れているように見えます。ランダムな言葉は何らかの理由で大文字になります。 –