使用选项创建视图(最大递归)?

时间:2018-06-22 13:22:50

标签: sql sql-server-2012

尝试在SQL Server 2012中保存视图时,出现“关键字'OPTION'附近的语法不正确”错误。我正在尝试将MAXRECURSION选项添加到公用表表达式的末尾。我看过的所有示例以及以前创建的工作CTE都不介意CTE末尾的“ OPTION(MAXRECURSION 0)”。

有人知道为什么我会收到此错误吗?尽管CTE达到了最大递归次数(100),但它没有OPTION子句就可以工作。

WITH CTE1 AS (select
       t.[ID_DIM_PRODUIT]
      ,t.[ID_FACTURE]
          ,t.[date_facture]
          ,t.[quantite]

      ,t.[quantite_enstock]
    from [dbo].[Fact_Stock] t
 cross apply (select sum([quantite_enstock]) as stockTotal 
                from [dbo].[Fact_Stock]
                where [ID_DIM_PRODUIT] = t.[ID_DIM_PRODUIT]
                and [date_facture] <= t.[date_facture]
            ) as st),
DateList (ID_FACTURE,ID_DIM_PRODUIT,stockTotal,date_facture,stockDateEnd  )
AS (
SELECT ID_FACTURE,ID_DIM_PRODUIT,stockTotal,date_facture 
      , LEAD(date_facture, 1) OVER ( PARTITION BY ID_DIM_PRODUIT ORDER BY date_facture ) AS stockDateEnd
    FROM CTE1
UNION ALL
SELECT ID_FACTURE,ID_DIM_PRODUIT,mvtStock,stockTotal,DATEADD(DAY,1,date_facture),stockDateEnd  FROM DateList
WHERE DATEADD(DAY,1,date_facture) < stockDateEnd
) 
SELECT  d.id_facture,d.ID_DIM_PRODUIT,d.stockTotal ,d.date_facture as date_stock  ,t.[ID_FACT_STOCK]

      ,t.[id_dim_fournisseur]
      ,t.[id_dim_depot]

      ,t.[poidnetGlobal]
      ,t.[poidsBrutGloba]
      ,t.[quantite]
      ,t.[montant_HT]
      ,t.[montant_TTC]
      ,t.[cout_moyen_unitaire]

      ,t.[mvtStock]
      ,t.[prix_vente_unitaire]
      ,t.[prix_achat]
      FROM DateList d , CTE1 t where  
        d.id_facture=t.ID_FACTURE and d.ID_DIM_PRODUIT=t.ID_DIM_PRODUIT ORDER BY ID_DIM_PRODUIT,date_stock
option (maxrecursion 0)

0 个答案:

没有答案