Ошибка при использовании UNPIVOT в SQL Server - PullRequest
0 голосов
/ 06 июня 2018

У меня следующий запрос:

    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'

Кто-нибудь знает причину, почему?Синтаксис выглядит правильно.

1 Ответ

0 голосов
/ 06 июня 2018

Просто используйте 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 (я думаю, что вы могли бы решить свою проблему с помощью подзапроса).

...