2016-09-27 9 views
1

WonderWareの履歴データベースからのすべてのタグにデータを取得しようとしています。既にすべてのタグを含む表があるので、サブクエリを使用してすべてのタグ名を選択したいと考えています。このサブクエリでエラーが発生しました。WonderWareのサブクエリを使用してすべてのタグを選択する

マイSQL文:私は受け付けており

/****** 

I want to be able to select: 
    - all columns 
    - for all tags <-- I'm getting an error here, trying to use a subquery 
    - between two time stamps 
    - at a specified resolution 

******/ 

SELECT * 
FROM 
    Runtime.[dbo].AnalogHistory 
WHERE 
    TagName IN (
     SELECT DISTINCT TagName 
     FROM 
      Runtime.dbo.Tag 
    ) 
AND 
    DateTime >= '2016-01-01 00:00' 
AND 
    DateTime < '2016-01-01 00:30' 
AND 
    wwResolution = 5000 
AND 
    wwRetrievalMode = 'Average' 
AND 
    wwTimeStampRule = 'Start' 

エラーは以下の通りです:

私はそれが正常に実行されていないことを意味を推測
OLE DB provider "INSQL" for linked server "INSQL" returned message "History queries must contain at least one valid tagname". 

。私はまた、OPENQUERYを使用してみましたが、その後私は、タグテーブルについて「スキーマ」情報を識別することができませんでしサブクエリに関連する他のエラーを取得

OLE DB provider "INSQL" for linked server "INSQL" returned message "Failed to retrieve schema information for object 'Tag'". 

この抜粋は変更されました:

TagName IN (SELECT * FROM OPENQUERY(INSQL, 
    'SELECT DISTINCT TagName 
    FROM 
     Runtime.dbo.Tag') 
) 

答えて

0

試してみてください。

SELECT DISTINCT aa.TagName FROM (
SELECT DateTime, TagName, Value 
FROM History 
WHERE DateTime >= '2016-01-01 00:00' 
AND DateTime <= '2016-01-01 00:30' 
AND wwResolution = 5000 
AND wwRetrievalMode = 'Average' 
AND wwTimeStampRule = 'Start' 
) aa 
1

歴史サーバーは、通常のSQL Serverデータベースではありません。歴史的な見解は、INSQLリンクサーバーからデータを取得します。 INSQLには、HistorianConcepts.pdfに記載されているいくつかの特別な規則があります。

SELECT 
    * 
FROM 
    Runtime.dbo.Tag t 
INNER REMOTE JOIN 
    Runtime.dbo.AnalogHistory h 
ON 
    t.TagName = h.TagName 
WHERE 
    DateTime >= '2016-01-01 00:00' 
AND 
    DateTime < '2016-01-01 00:30' 
AND 
    wwResolution = 5000 
AND 
    wwRetrievalMode = 'Average' 
AND 
    wwTimeStampRule = 'Start' 
関連する問題