Я пытаюсь использовать функцию Pivot, чтобы получить следующую таблицу:
разбить строки TagID на столбцы, TagValue каждого TagID и DATEADD TimeStamp для отображения значений avg каждые 5 минут:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(TagID)
from table
group by TagID
order by TagID
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT Top (500) DATEADD(minute,DATEDIFF(minute,0,TimeStamp)/5*5,0) AS TimeStamp, ' + @cols + ' from
(
select TimeStamp, TagID , TagValue
from table
Group By TimeStamp, TagID, TagValue
) x
pivot
(
AVG(CAST(TagValue) AS DECIMAL(18,2))
for TagID in ( ' + @cols + ' )
) p '
execute(@query)
Я пытаюсь создать avg для столбца TagValue.
После того, как я использовал функцию CAST, как вы можете видеть выше, отобразился запрос:
Msg 102, Level 15, State 1, Line 12
Incorrect syntax near '('.
хотя я не могу найти, что неправильно и какой точный синтаксис неверен.
Буду очень признателен за помощь, поскольку Management Studio не показывает, в чем проблема.
Я посмотрел онлайн и обычно функция avg используется так:
AVG (TagValue), хотя он не работает для столбца NVARCHAR.