我执行此查询时出错,有什么建议吗?

时间:2012-11-30 14:56:39

标签: sql sql-server database

我想计算客户订单的总价格:

SELECT 
    C.ctm_Id, O.OrderId, SUM(P.pdt_UnitPrice * O.Quantity), 
FROM 
    Customer C, Orders O, Product P
WHERE 
    P.pdt_Id = O.OrderID GROUP BY C.ctm_Id

这是错误:

  

Msg 156,Level 15,State 1,Line 2
  关键字“FROM”附近的语法不正确。

5 个答案:

答案 0 :(得分:5)

额外的逗号:

SELECT C.ctm_Id, O.OrderId, SUM(P.pdt_UnitPrice * O.Quantity), 
                                                             ^-- here

答案 1 :(得分:2)

删除FROM之前的逗号

SELECT C.ctm_Id, O.OrderId, SUM(P.pdt_UnitPrice * O.Quantity) 
    FROM Customer C, Orders O, Product P
    WHERE P.pdt_Id = O.OrderID GROUP BY C.ctm_Id

答案 2 :(得分:1)

SUM(P.pdt_UnitPrice * O.Quantity), - 额外,

答案 3 :(得分:1)

尝试 SELECT C.ctm_Id, O.OrderId, SUM(P.pdt_UnitPrice * O.Quantity) FROM Customer C, Orders O, Product P WHERE P.pdt_Id = O.OrderID GROUP BY C.ctm_Id,O.OrderId

答案 4 :(得分:0)

此问题是您必须在GROUP BY子句中包含所有不在聚合函数中的列。您没有在GROUP BY子句中添加O.OrderId。

luchosrock提到的是更好的方式。

但是,我强烈建议您使用JOIN。顺便说一句,您没有在Customer表和Order表之间建立连接。

您想要为客户汇总订单的总价。您的查询应如下所示:

select
    C.ctm_Id,
    O.OrderId,
    SUM(P.pdt_UnitPrice * O.Quantity)
from Customer C
join Orders O
    on C.ctm_Id = O.ctm_Id
join Product P 
    on O.pdt_Id = P.pdt_Id
group by C.ctm_Id, O.OrderId