Chắc chắn đây là một kỹ thuật đơn giản mặc dù tôi không thể tìm thấy câu trả lời cho đến nay!Bảng tổng hợp MS SQL Server với truy vấn con trong mệnh đề cột
Tôi có
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
vv ... (đối với khoảng 800 POINTNAMES)
với nhiều pointnames Tôi không muốn liệt kê mỗi một trong 'trong' khoản của trục 'CHO' (như cú pháp đưa ra dưới đây) định nghĩa nhưng muốn sử dụng có lẽ một truy vấn phụ.
Vì vậy, điều tôi muốn là tất cả giá trị POINTNAME dưới dạng cột có cột TIMESTAMP và VALUE, vì vậy tôi sẽ nhận được một giá trị TIMESTAMP và nhiều cột với mỗi POINTNAME, chỉ có một giá trị cho mỗi POINTNAME PER TIMESTAMP. t cần phải tổng hợp bất cứ điều gì vì vậy chỉ cần chọn tối đa nào?
Cái gì như:
SELECT [TIMESTAMP] FROM (SELECT * FROM POINT_TABLE)
PIVOT(Max[Value] FOR [POINTNAME] IN (SELECT DISTINCT [POINTNAME] FROM POINT_TABLE)
sẽ produce-
TIMESTAMP AHU01 AHU02
2012-10-10 16:00:00 20 25
2012-10-10 16:15:00 26 35
Tôi nhận ra nó có lẽ không đơn giản này nhưng hy vọng bạn sẽ có được những gì tôi đang cố gắng để đạt được?
PIVOT CÚ PHÁP:
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>;
Bạn thay đổi quan trọng dường như bị phá vỡ. Các từ ngẫu nhiên được viết hoa vì một số lý do. –