【发布时间】:2017-05-27 15:20:04
【问题描述】:
我在 sql 中的 sum 函数有问题,如下所示:
SELECT Member.Name, Book.Title AS BookBought, Order_Member_Det.Quantity, Order_Member_Det.Price, Order_Member.Total
FROM Order_Member
INNER JOIN OrderWithMember ON Order_Member.OrderID = OrderWithMember.OrderID
INNER JOIN Order_Member_Det ON OrderWithMember.MemberOrderID = Order_Member_Det.MemberOrderID
INNER JOIN Member ON OrderWithMember.MemberID = Member.MemberID
INNER JOIN Book ON Order_Member_Det.BookID = Book.BookID
结果是:
Name BookBought Quantity Price Total
----------------------------------------------------
John Flip it 2 50 150
John California Penal Code 1 50 150
Jack Forum Internationale 2 80 160
Alice Securitization 2 80 210
Alice The Cervical Spine 1 50 210
Kevin Trading Commodities 1 55 55
James Aerodynamics 1 90 90
我想像这样使用 SUM(TOTAL) 来添加表中所有总数的 SUM:
SELECT Member.Name, Book.Title AS BookBought, Order_Member_Det.Quantity, Order_Member_Det.Price, Order_Member.Total, **SUM(Order_Member.Total)**
FROM Order_Member
INNER JOIN OrderWithMember ON Order_Member.OrderID = OrderWithMember.OrderID
INNER JOIN Order_Member_Det ON OrderWithMember.MemberOrderID = Order_Member_Det.MemberOrderID
INNER JOIN Member ON OrderWithMember.MemberID = Member.MemberID
INNER JOIN Book ON Order_Member_Det.BookID = Book.BookID
然后我得到一个错误:
消息 8120,第 16 级,状态 1,第 264 行
列“Member.Name”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
但是如果我像这样使用 sum 创建新的选择,它会起作用:
SELECT SUM(Total) From Order_Member;
它可以产生这个输出:
ColumnName
665
那么如何在给定的情况下组合两个选择,我也使用了 INNER JOIN 所以子查询可能在这里不起作用。有什么想法吗?
【问题讨论】:
-
"Msg 8120" 是 SQL Server 错误,而不是 MySQL 错误。我修复了标签,因为错误消息是正在使用的数据库的非常令人信服的证据。
标签: sql sql-server sum