2016-05-06 8 views
2

SQLでビューを作成したいのですが、tableauソフトウェアはCTE機能をサポートしていません。私はMAXRECURSIONを使用しているので、ビューを追加できません。エラーメッセージはオプションを使用してビューを作成する(maxrecursion)

キーワード 'OPTION'の近くに誤った構文があります。

以下は、再帰的な方法を使用した既存のCTEクエリです。

既存のクエリではどこに追加する必要がありますか?

WITH shiftHours AS (
    -- This is a recursive CTE, code removed to improve readability 
) 

SELECT * 
FROM (
    SELECT * from shiftHours 
) AS t 
    PIVOT (
SUM(hourValue) 
FOR hourOrdinal IN ([0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23]) 
) AS pvt 
OPTION (MAXRECURSION 0) 
GO 
+1

あなたの状況はどうなっていますか?エラー? – Yatrix

+0

私の現在のクエリはCTEを使用しているので、私はTableauに入れることができるようにビューを追加する方法がわかりません!ビューを追加する方法はありますか? @ Yatrix – Vannessa

+0

残念ながら、最も外側のクエリ(ビューを使用する*)に 'OPTION'を適用しなければならないと思います。作業しているソフトウェアがCTEを気に入らない場合は、おそらくクエリヒントを持つトラックがほとんどない可能性があります。 –

答えて

-2
Create View [dbo].[YourViewname] as 
//Your CTE 
go 

この中の任意の課題があるべきではありません。あなたは何に直面していますか?

+0

**キーワード 'OPTION'の近くに誤った構文があります。** これはエラーメッセージです – Vannessa

+0

私はそれがMAXRECURSIONによるものだと思います – Vannessa

0

OPTIONはクエリごとに1回のみ使用できます。 ビューを使用するクエリでOPTIONを使用する必要があります。

0

OPTION句を明示的に含むVIEWを作成することはできませんが、期待される結果が100を超えると予想されるCTEがあり、VIEW呼び出しにOPTION文を追加する必要がないようにしたい場合は、 OPEN句を含むCTEをVIEW内のOPENQUERY文で実行します。あなたの例では

、それはおそらく、このようになります:

select * from OPENQUERY([YourDatabaseServer], ' 
WITH shiftHours AS (
    -- This is a recursive CTE, code removed to improve readability 
) 

SELECT * 
    FROM (
    SELECT * from YourDatabase.YourUser.shiftHours 
) AS t 
    PIVOT (
    SUM(hourValue) 
     FOR hourOrdinal IN ([0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23]) 
) AS pvt 
    OPTION (MAXRECURSION 0) 

「)は、あなたが完全にオブジェクトの前に付ける必要があり、データベースとユーザーの仕様、つまり、オブジェクト参照を修飾する必要があります

お知らせをX(テーブル、ビュー、sproc、または関数)参照。

確かに、それはちょっと醜いですが、うまくやり遂げられ、その厄介なOPTION節を追加する必要はありません。

関連する問題