Проблема с предложением with при подключении к базе данных Wonderware Historian - PullRequest
0 голосов
/ 16 апреля 2019

Я подключаюсь к базе данных Wonderware Historian на Tableau Desktop через пользовательский SQL-запрос.Я сталкиваюсь с проблемой, когда использую с оператором в своем запросе.

SELECT DateTime, Compteur, Valeur
FROM
(
SELECT  DateTime, TagName AS Compteur
,       Value - LAG(Value, 1, NULL) OVER (PARTITION BY TagName ORDER BY 
DateTime) AS Valeur
FROM History 
WHERE  TagName IN 
                (
                 'H270ME01MDB90.vol',
                'H270ME01MDB91.vol',
                'HA44AC01CDI07.vol',
                'HA44AC01CDI06.vol'
                ) 
AND DateTime >='2018-12-31 23:59:00'
AND wwRetrievalMode='Delta'
)t
WHERE t.DateTime >='2018-12-31 23:59:59'

С помощью этого кода я могу получить дату из базы данных, но мне нужно манипулировать этими данными и выполнять следующие действия:

WITH t AS 
(
  SELECT DateTime, Compteur, Valeur
  FROM (SELECT  DateTime, TagName AS Compteur
,               Value - LAG(Value, 1, NULL) OVER (PARTITION BY TagName ORDER 
BY DateTime) AS Valeur
        FROM History 
        WHERE TagName IN ('H270ME01MDB90.vol', 'H270ME01MDB91.vol', 
'HA44AC01CDI07.vol', 'HA44AC01CDI06.vol'
                          )  AND
              DateTime >='2018-12-31 23:59:00' AND
              wwRetrievalMode = 'Delta'
       ) k
   WHERE k.DateTime >= '2019-01-01'  
)
SELECT t.*
FROM t
UNION ALL
(SELECT dateadd(hh,datepart(hh,DateTime), cast(CAST(DateTime as date) as 
Datetime)),
    'K' as compteur,
    (SUM(CASE WHEN Compteur IN ('H270ME01MDB90.vol', 'H270ME01MDB91.vol') 
THEN Valeur END) /
     SUM(CASE WHEN Compteur IN ('HA44AC01CDI07.vol', 'HA44AC01CDI06.vol') 
THEN Valeur
         END)
    ) * SUM(CASE WHEN Compteur IN ('HA44AC01CDI06.vol') THEN Valeur END)
 FROM t
 GROUP BY hour
);

Выдает ошибку и говорит, что я должен поставить точку с запятой перед оператором with.Когда я добавляю его, он говорит, что рядом с ";" указан неверный синтаксис.Любая помощь будет оценена.Спасибо!

РЕДАКТИРОВАТЬ: Ошибка Microsoft SQL

Даже это простое с утверждением не работает.

1 Ответ

1 голос
/ 16 апреля 2019

Я почти уверен, что вы не можете использовать CTE в пользовательских SQL-запросах для Tableau.В качестве источников данных SQL Tableau может использовать только отдельные операторы SELECT.

...