【发布时间】:2016-08-23 23:34:55
【问题描述】:
在给定出版商名称的同时,我想生成一份按年份和月份排序的图书报告。对于每一年和每月,报告应显示 bookid、书名、书名的订单总数、总数量和总销售价值(订单价值和零售价值),同时给出图书 ID
我的代码:
SELECT
ShopOrder.OrderDate, Book.BookID, Book.title,
COUNT(ShopOrder.ShopOrderID) AS "Total number of order",
SUM (Orderline.Quantity) AS "Total quantity",
Orderline.UnitSellingPrice * Orderline.Quantity AS "Total order value",
Book.Price * OrderLine.Quantity AS "Total retail value"
FROM
ShopOrder, Publisher, Book, Orderline
WHERE
Publisher.name = 'Penguin Books'
AND ShopOrder.ShopOrderID = Orderline.ShopOrderID
AND Book.BookID = Orderline.BookID
AND Publisher.PublisherID = Book.PublisherID
ORDER BY
ShopOrder.OrderDate;
错误:
列“shoporder.orderdate”必须出现在 GROUP BY 子句中或用于聚合函数
第 1 行:选择 ShopOrder.OrderDate、Book.BookID、Book.title、COUNT(S... ^错误:列“shoporder.orderdate”必须出现在 GROUP BY 子句中或用于聚合函数
SQL 状态:42803
字符:8
【问题讨论】:
-
你确定有一个表或视图叫orderline?
-
stackoverflow.com/questions/695289/… - 您没有正确引用表名。您还可以为您的表名设置别名,这样您就不必一遍又一遍地编写它们(我知道这不是问题的一部分,但它会缩短您的查询并使其更易于阅读)。
-
Edited the Error,抱歉之前的错误
-
感谢状态报告,显示查询和错误。您有问题吗?
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(20 多年前),不鼓励使用它
标签: sql