С учетом следующего упрощенного сценария.
DROP TABLE IF EXISTS SourceData;
CREATE TABLE SourceData
(
[Timestamp] DATE NOT NULL,
[Point] NVARCHAR(100) NOT NULL,
[Value] FLOAT NOT NULL
)
INSERT INTO SourceData
VALUES
('2020-01-01', 'A', 0.25),
('2020-01-01', 'B', 0.5),
('2020-01-01', 'C', 0.99),
('2020-01-02', 'A', 0.30),
('2020-01-02', 'B', 0.75),
('2020-01-02', 'C', 1.50),
('2020-01-03', 'A', 0.35),
('2020-01-03', 'B', 0.80),
('2020-01-03', 'C', 1.75)
SELECT
*
FROM
(
SELECT
[Timestamp],
[Point],
[Value]
FROM SourceData
) AS SourceTable
PIVOT
(
AVG([Value])
FOR [Point] IN (A, B, C)
) AS PivotTable;
Возвращает:
Timestamp A B C
2020-01-01 0.25 0.5 0.99
2020-01-02 0.3 0.75 1.5
2020-01-03 0.35 0.8 1.75
Fiddle Link
Возможно ли получить те же результаты без жесткого кодирования имен столбцов внутри PIVOT
пункт? Я не знаю заранее, какие уникальные значения в столбце Point
.
Или ... есть ли способ указать их на основе запроса?