【问题标题】:Don't Understand SQL Syntax Error不懂 SQL 语法错误
【发布时间】:2013-11-18 06:42:35
【问题描述】:

我已经检查过这段代码好几次了,但我不知道为什么会这样

关键字“SR”附近的语法不正确

这是我的 SELECT 查询:

SELECT OrderDetails.OrderID,OrderDetails.ProductCode,OrderDetails.Vendor_Price,OrderDetails.Quantity
FROM OrderDetails
JOIN
(SELECT OrderDetails.OrderID,  
CASE Orders.SalesRep_CustomerID WHEN  1 THEN 'S'  WHEN 2 THEN 'K' WHEN 3 THEN 'M' ELSE '' END 
FROM Orders
GROUP BY OrderDetails.OrderID)
AS 'SR'
WHERE OrderDetails.ShipDate IS NOT NULL
AND OrderDetails.ShipDate >= DATEADD(Day, Datediff(Day,0, GetDate() -6), 0)
ORDER BY OrderDetails.ProductCode ASC

这很简单,我只是没有看到计算机所指的语法错误。 谢谢。

【问题讨论】:

  • 去掉'SR'周围的引号
  • @RUJordan 我现在在“WHERE”附近的语法不正确
  • 取消引用表别名 - 应该是 SR,而不是“SR”。在其后添加缺少的“ON”子句;它是JOIN <table> ON <columnA> = <columnB>,而您缺少ON 和要加入的列。

标签: sql sql-server sql-server-2005 select


【解决方案1】:

将“SR”更改为 SR。不需要引号。

[更新]

你也忘记了 AS SR 之后的 ON 语句

JOIN (select query...) as SR on SR.OrderID = OrderDetails.OrderID

如果不将其更改为您需要的任何内容,我想它应该是 OrderID。

[更新 3] 替换整个查询

顺便说一句,我认为您不会使用此查询获得结果,您需要使用以下内容:

SELECT OrderDetails.OrderID
            ,OrderDetails.ProductCode
            ,OrderDetails.Vendor_Price
            ,OrderDetails.Quantity
            ,CASE Orders.SalesRep_CustomerID WHEN  1 THEN 'S'  WHEN 2 THEN 'K' WHEN 3 THEN 'M' ELSE '' END 
    FROM OrderDetails 
    JOIN #Also consider using INNER JOIN if needed
        Orders on Orders.OrderId = OrderDetails.OrderId
    WHERE 
        OrderDetails.ShipDate IS NOT NULL
        AND OrderDetails.ShipDate >= DATEADD(Day, Datediff(Day,0, GetDate() -6), 0)
    ORDER BY OrderDetails.ProductCode ASC

【讨论】:

  • 您缺少连接的 ON 部分,它应该在 where 子句之上。
  • 很抱歉,是的,您忘记了 ON 声明,更新了答案
  • 谢谢,但现在我收到了The multi-part identifier "OrderDetails.OrderID" could not be bound.
  • @henryaaron 使用我在 update3 中为你写的查询!你的问题太多了。
【解决方案2】:

JOIN 后面没有ON 语句

【讨论】:

  • 你解决了一半的问题。 :) 不过,我不能投半票;所以不会让我。
  • 我认为他可以将这个答案与其他答案结合起来。
  • 您应该回答整个问题,或者只是评论提供其余问题的另一个问题。正如我所说,我不能投一半的赞成票(发帖人也不能分开接受)。
猜你喜欢
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多