不了解SQL语法错误

时间:2013-11-06 20:23:51

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

我已经多次查看过此代码,但我无法弄清楚为什么我会这样做

  

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

ON

后面没有JOIN声明