首页 > 解决方案 > 我收到“')' 附近的语法错误”

问题描述

我在存储过程中编写了这个查询并从 C# 调用它。它工作正常。

WITH SelectedRows AS
(
     SELECT 
         ROW_NUMBER() OVER (ORDER BY InnerDataTable.DepotCode ASC) AS RowNo, 
         InnerDataTable.* 
     FROM
         (SELECT DISTINCT 
              Date, No, Person.Title AS PersonTitle, Person.Name AS PersonName, 
              (... some other columns from tables ...)
          FROM 
              SellInvoice
          JOIN 
              SellInvoiceDetail AS Detail ON Detail.SellInvoiceGuid = SellInvoice.Guid
          JOIN 
              Depot ON Depot.Guid = SellInvoice.DepotGuid
          JOIN 
              Item ON Item.Guid = Detail.ItemGuid
          ( ... and something else... )) AS InnerDataTable  
     WHERE 
         InnerDataTable.Company = '391891BA-DCC9-4B76-9588-9C97E0C2071A' 
         AND InnerDataTable.Branch = 'A2C9055A-7DDD-41AF-9A2F-DFC42D6C2B14'
)

但是当我在 SQL Server Management Studio 中对其进行测试时,执行失败并显示错误:

')' 附近的语法不正确

它指的是最后一行..那个错误是什么..?

标签: sql-serverselect

解决方案


您缺少 CTE 中的实际 SELECT 。有关如何使用 CTE(公用表表达式)的更多指导,请参阅Microsoft 文档

WITH SelectedRows AS
(
     SELECT 
         ROW_NUMBER() OVER (ORDER BY InnerDataTable.DepotCode ASC) AS RowNo, 
         InnerDataTable.* 
     FROM
         (SELECT DISTINCT 
              Date, No, Person.Title AS PersonTitle, Person.Name AS PersonName, 
              (... some other columns from tables ...)
          FROM 
              SellInvoice
          JOIN 
              SellInvoiceDetail AS Detail ON Detail.SellInvoiceGuid = SellInvoice.Guid
          JOIN 
              Depot ON Depot.Guid = SellInvoice.DepotGuid
          JOIN 
              Item ON Item.Guid = Detail.ItemGuid
          ( ... and something else... )) AS InnerDataTable  
     WHERE 
         InnerDataTable.Company = '391891BA-DCC9-4B76-9588-9C97E0C2071A' 
         AND InnerDataTable.Branch = 'A2C9055A-7DDD-41AF-9A2F-DFC42D6C2B14'
)
SELECT * -- Added
FROM SelectedRows -- Added

也许您只是没有在上面的查询中包含此内容,但这似乎是 SQL ServerIncorrect syntax near ')'在最后一行返回的一个非常可靠的理由。


推荐阅读