在 SQL Server 中使用 UNPIVOT 时出错



我有以下查询:

SELECT STDEV(Value) as Value, TimeOfTest as Date
FROM myTable
unpivot
(
value
for col in (WS1, WS2, WS3, WS4, WS5, WS6, WS7, WS8, WS9, WS10, WS11, 
WS12, WS13, WS14, WS15, WS16, WS17, WS18, WS19, WS20)
) un
GROUP BY TimeOfTest
ORDER BY TimeOfTest DESC

但我收到一个SQL Server 2008错误:关键字"FOR"附近的语法不正确

有谁知道原因吗?语法看起来正确。

只需使用APPLY.

SELECT t.TimeOfTest, STDEV(ws) as Value
FROM myTable t CROSS APPLY(
(VALUES (WS1), (WS2), . . . (WS20)) v(ws)
GROUP BY t.TimeOfTest
ORDER BY t.TimeOfTest DESC;

APPLY实现了称为"横向连接"的东西。 这是一个非常强大(和 ANSI 标准(的构造,可用于非透视之外的许多事情。 另一方面,unpivot是非常具体的语法,仅用于一个目的。正如您所发现的,可能无法很好地使用其他结构,例如GROUP BY(我认为您可以使用子查询来解决您的问题(。

相关内容

  • 没有找到相关文章