1

我已经多次检查了这段代码,但我不知道为什么我会得到

关键字“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

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

4

2 回答 2

4

将“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
于 2013-11-06T20:26:01.693 回答
2

你没有ON在你之后的声明JOIN

于 2013-11-06T20:27:51.963 回答