Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接到wonderware historian数据库时with子句出现问题_Sql_Sql Server_Tableau Api_Common Table Expression - Fatal编程技术网

Sql 连接到wonderware historian数据库时with子句出现问题

Sql 连接到wonderware historian数据库时with子句出现问题,sql,sql-server,tableau-api,common-table-expression,Sql,Sql Server,Tableau Api,Common Table Expression,我正在通过自定义sql查询连接到Tableau桌面上的Wonderware Historian数据库。当我在查询中使用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 FRO

我正在通过自定义sql查询连接到Tableau桌面上的Wonderware Historian数据库。当我在查询中使用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语句前加一个分号。当我添加它时,它说;,附近有一个不正确的语法;。 任何帮助都将不胜感激。 谢谢

编辑:


即使是这个简单的with语句也不起作用。

我很确定您不能在Tableau的自定义SQL查询中使用CTE。Tableau只能使用单个SELECT语句作为SQL数据源。

Wnat是不使用;?这就是我在没有分号的情况下遇到的错误:关键字“with”附近的语法不正确。如果此语句是公共表表达式、xmlnamespaces子句或更改跟踪上下文子句,上一条语句必须以分号结尾。您确定这是MySQL吗?我的目标是通过对现有行进行一些计算并将结果添加到表中,从而在不更改数据库的情况下获取数据并向数据中添加新行。这是Wonderware Historian数据库,通过选择Microsoft Sql Server选项。顺便说一下,LAG工作正常,所以它应该支持这类事情,对吗?是的,这是医生说的。它将[All your Custom SQL here]中的SELECT TOP 1*包装为[TableauSQL],因此出错谢谢Chris Hackett!这实际上就是问题所在。要解决此问题,在连接到数据库之前,应编辑初始SQL。因此,我在初始SQL中编写了相同的代码。将相同的代码放在初始SQL中是否正确…?看起来您必须更改两个部分:1。将所有当前代码(CTE和select from)放入初始SQL框中,但当前代码需要插入您选择的本地临时表名称中,即select t.*插入您的TMPTABLE from t。。。。2.在自定义SQL查询中,使用类似于从tmptable中选择*的内容