我正在通过自定义sql查询连接Tableau桌面上的Wonderware历史学家数据库。当我在查询中使用with语句时,我面临一个问题。
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错误
即使这个简单的语句也不起作用。
发布于 2019-04-16 13:21:42
我很确定您不能在Tableau的自定义SQL查询中使用CTE。Tableau只能使用单个SELECT语句作为SQL数据源。
https://stackoverflow.com/questions/55708295
复制相似问题