2017-05-02 1 views
0

を使用することはできません私はこのようなステートメントで のために次のエラーがあります:は、私はこのように構成されたビューを作成するためにwan'tの文で2回

Incorrect syntax near the keyword 'With'. Incorrect syntax near the keyword 'with'.

If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.

SELECTクエリがさらに複雑で、2回使用する必要があることを指定する必要があります。

最初のwith文をviewTempLevel1のような別のビューとして作成し、With TempLevel2文で使用する方がよいでしょうか?

+0

'SELECT'、' FROM'や 'WHERE'のように、二度使用できない文がたくさんあります。このような場合、いくつかのパラメータを受け入れることがあります。 –

+1

@ÁlvaroGonzálezここのケースではありません。複数のCTEを指定するために*キーワード*を繰り返す必要はありません –

+0

@PanagiotisKanavosそうではありませんか?私はそれができないと言いたい。あなたは答えとして投稿したので、私は誤解されてしまったと思います。 –

答えて

4

を共通テーブル式(CTE)についてdocumentationから、あなたは

Use a comma to separate multiple CTE definitions

例は

WITH Sales_CTE (SalesPersonID, TotalSales, SalesYear) 
AS 
-- Define the first CTE query. 
( 
    SELECT SalesPersonID, SUM(TotalDue) AS TotalSales, YEAR(OrderDate) AS SalesYear 
    FROM Sales.SalesOrderHeader 
    WHERE SalesPersonID IS NOT NULL 
     GROUP BY SalesPersonID, YEAR(OrderDate) 

) 
, -- Use a comma to separate multiple CTE definitions. 

-- Define the second CTE query, which returns sales quota data by year for each sales person. 
Sales_Quota_CTE (BusinessEntityID, SalesQuota, SalesQuotaYear) 
AS 
( 
     SELECT BusinessEntityID, SUM(SalesQuota)AS SalesQuota, YEAR(QuotaDate) AS SalesQuotaYear 
     FROM Sales.SalesPersonQuotaHistory 
     GROUP BY BusinessEntityID, YEAR(QuotaDate) 
) 

-- Define the outer query by referencing columns from both CTEs. 
SELECT SalesPersonID... 
(ストレートドキュメントから取り出し)されることができます

あなたの場合、構文は...

With TempLevel1 AS 
    (SELECT statement [...]), 
TempLevel2 AS 
    (SELECT * from TempLevel1) 

SELECT * from TempLevel2 
+0

あなたは正しいです、ありがとう! – berthos

3

WITHキーワードを繰り返す必要はありません。コンマでCTE式を区切る:

With CTE_Level1 AS 
( 
    SELECT statement 
), 
CTE_Level2 AS 
(
    SELECT * from CTE_Level1 
) 
SELECT * from CTE_Level2 
+1

あなたは正しいです、ありがとう – berthos

関連する問題