SQL 查询 - '(' 附近的语法不正确 - CREATE NONCLUSTERED INDEX 和关联的语法

问题描述 投票:0回答:0

我正在为我们的数据库调整 fifo-stock-inventory-sql-problem,但是 SQL 代码的所有 3 个 NONCLUSTERED INDEX 部分似乎都出现错误,并且在 '(' 附近出现语法错误 [即我收到 3 个错误,所有语法错误都在 '( ' ]。我需要更改什么来消除错误?

早些时候我将 WITH 更改为 ;WITH(即添加 ; WITH 的前缀)。注释掉 3 个 NONCLUSTERED INDEX 部分中的 1 个会导致 SQL 错误从 3 次减少到 2 次。使用 SQL Server 2016 (130) 数据库。

PS:字段[TRANSTYPE]是整数类型(例如收据为1的值)

--- from https://www.red-gate.com/simple-talk/databases/sql-server/performance-sql-server/set-based-speed-phreakery-the-fifo-stock-inventory-sql-problem/
---
CREATE NONCLUSTERED INDEX [IX_Dave_General]
    ON [dbo].[ICIVAL]   --- RotoID IC0352 --- was [dbo].[Stock] 
     ( 
       [ITEMNO] ASC,      --- ascending  --- was [ArticleID]
       [TRANSDATE] DESC,  --- descending --- was [TranDate]
       [TRANSTYPE] ASC    --- ascending  --- was [TranCode] 
     )    
INCLUDE ( [QUANTITY], [TRANSCOST] )  --- was ( [Items], [Price])                    --- XXX Price XXX ---
    ;WITH (
      PAD_INDEX  = OFF,
      STATISTICS_NORECOMPUTE  = OFF,
      SORT_IN_TEMPDB = OFF,
      IGNORE_DUP_KEY = OFF,
      DROP_EXISTING = OFF,
      ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, 
      ALLOW_PAGE_LOCKS  = ON )
    ON [PRIMARY]   
 GO
----------------------------------------------------------------------------------------------------------------------------------------------------------- 
CREATE NONCLUSTERED INDEX [IX_Dave_Items]
    ON [dbo].[ICIVAL] --- was [dbo].[Stock]
     (            
      [ITEMNO] ASC,       --- was [ArticleID] 
      [TRANSDATE] ASC     --- was [TranDate] 
      )
    INCLUDE ( [QUANTITY])  --- was [Items]     
    WHERE ( ([TRANSTYPE] = 1) ) ---  OR ([TRANSTYPE] = 5) )  --- 1 = Receipt, 2 = Rec Adjust, 3 = Rec Return, 5= Shipment Return --- was ([TranCode] IN ('IN', 'RET'))    
    ;WITH (
  PAD_INDEX  = OFF,
  STATISTICS_NORECOMPUTE  = OFF, 
  SORT_IN_TEMPDB = OFF,
  IGNORE_DUP_KEY = OFF, 
  DROP_EXISTING = OFF,
  ONLINE = OFF,
  ALLOW_ROW_LOCKS  = ON, 
  ALLOW_PAGE_LOCKS = ON
 )
   ON [PRIMARY]    
GO
----------------------------------------------------------------------------------------------------------------------------------------------------------------   
CREATE NONCLUSTERED INDEX [IX_Dave_Price]
   ON [dbo].[ICIVAL]  --- was [dbo].[Stock]
    (            
      [ITEMNO] ASC,     --- was [ArticleID]   
      [TRANSDATE] ASC   --- was [TranDate]  
     )    
    INCLUDE ( [TRANSCOST])        --- was  ( [Price])                                           --- XXX Price XXX ---
    WHERE ( [TRANSTYPE] = 1 )     --- was  ([TranCode]='IN')     --- 1 = Receipt, 99 = Dummy    
    ;WITH (
   PAD_INDEX  = OFF,
   STATISTICS_NORECOMPUTE  = OFF,
   SORT_IN_TEMPDB = OFF, 
   IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,
   ONLINE = OFF, ALLOW_ROW_LOCKS  = ON,
   ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 100) 
    ON [PRIMARY]    
GO
---------------------------------------------------------------------------------------------------------------------------------
---  Sum up the ins and outs to calculate the remaining stock level 
;WITH    
cteStockSum
  AS ( SELECT   [ITEMNO] ,                                           --- was  ArticleID without  [ ] brackets
                SUM(CASE WHEN [TRANSTYPE] = 5 THEN 0-[QUANTITY]      --- was WHEN TranCode = 'OUT' THEN 0 - Items    --- TRANSTYPE = 5 means Shipment Returns XXXXX should be Shipment
                         ELSE [QUANTITY]                             --- was ELSE Items
                    END) AS TotalStock
       FROM     [dbo].[ICIVAL]    --- was dbo.Stock
       GROUP BY [ITEMNO]          --- was GROUP BY ArticleID
     ),
syntax non-clustered-index
© www.soinside.com 2019 - 2024. All rights reserved.