我想计算客户订单的总价格:
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”附近的语法不正确。
答案 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