【发布时间】:2014-03-06 18:30:52
【问题描述】:
我有一个大的长视图查询,我正在尝试创建如下:
CREATE VIEW [iFix].[UF90NIRHistorian]
AS
SELECT
PARSENAME(TagName,2) As [TagName],
CONVERT(DATETIME,[TimeStamp]) As [TimeStamp],
CONVERT(FLOAT,Value) As [Value]
FROM OPENQUERY(IFIX_HISTORIAN,
'
SET
StartTime={ts ''2014-02-06 00:00:00''},
SamplingMode=Calculated,
CalculationMode=Average,
IntervalMilliseconds=1Hour,
RowCount=0
SELECT * FROM ihRawData WHERE
TagName LIKE *.UF90n_TS_SP.F_CV OR
TagName LIKE *.UF90n_DMB_SP.F_CV OR
TagName LIKE *.SW_U680_01.F_CV OR
TagName LIKE *.PD_U680_01.F_CV OR
TagName LIKE *.FW_U680_01.F_CV
')
PIVOT(
AVG(CONVERT(FLOAT,Value) As Value)
FOR [TagName] In (
[UF90n_DMB_SP],
[UF90N_TS_SP],
[SW_U680_01],
[PD_U680_01],
[FW_U680_01])
) AS p
当我尝试将 Value 列从字符串转换为浮点数时,在 PIVOT 命令之后的行上出现语法错误。如果我在没有枢轴的情况下创建视图,然后将其结果作为第二个视图进行枢轴,则此错误就会消失。有什么方法可以将其保留为一个视图并修复该语法错误?
【问题讨论】:
-
你真的可以发布错误信息吗?
-
你不能在那个地方应用
convert(AVG(CONVERT(FLOAT,Value) As Value))。您必须在应用avg()之前转换数据。 -
错误信息是:关键字'CONVERT'附近的语法不正确。
标签: sql sql-server view pivot