我确定这是一个简单的技术,虽然我到目前为止找不到答案!
我有
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
Run Code Online (Sandbox Code Playgroud)
等......(大约800个POINTNAMES)
有很多点名我不想在每个枢轴'FOR'的'IN'子句中列出(如下面给出的语法)定义,但是想使用子查询.
所以我想要的是将所有POINTNAME值作为具有A TIMESTAMP和VALUE列的列,因此我将获得一个TIMESTAMP值和每个POINTNAME的多个列,每个POINTNAME PER TIMESTAMP只有一个值,所以我不需要聚合什么,所以只要选择最大值?
就像是:
SELECT [TIMESTAMP] FROM ( SELECT * FROM POINT_TABLE)
PIVOT( Max[Value] FOR [POINTNAME] IN (SELECT DISTINCT [POINTNAME] FROM POINT_TABLE)
Run Code Online (Sandbox Code Playgroud)
会产生 -
TIMESTAMP AHU01 AHU02
2012-10-10 16:00:00 20 25
2012-10-10 16:15:00 26 35
Run Code Online (Sandbox Code Playgroud)
我意识到这可能不是这么简单,但希望你得到我想要实现的目标?
PIVOT语法:
SELECT <non-pivoted column>,
[first pivoted column] AS <column name>,
[second pivoted column] AS <column name>,
...
[last …Run Code Online (Sandbox Code Playgroud)