我无法创建自己的观点而且我不知道如何修复它。 在尝试创建视图时,它会尝试将select中的所有列添加到组中,这不是我想要的。并且无论如何都无法工作
CREATE OR REPLACE FORCE VIEW CustomerSaleHistoryView AS
Select SALE.SaleID,
SALE.SaleDate,
CUSTOMER.LastName,
CUSTOMER.FirstName,
SALE_ITEM.SaleItemID,
SALE_ITEM.ItemID,
ITEM.ItemPrice,
SUM(SALE_ITEM.ITEMPRICE),
AVG(SALE_ITEM.ITEMPRICE)
from customer
join sale on customer.CUSTOMERID = Sale.CUSTOMERID
join sale_item on sale_item.saleid = sale.saleID
join item on sale_item.itemID = item.itemID
group by CUSTOMER.LastName, CUSTOMER.FirstName, SALE.SaleID;
答案 0 :(得分:0)
为了让您查询工作,您必须按照未使用SUM()
或AVG()
等公式聚合的任何列进行分组。在您的情况下GROUP BY SALE.SaleID, SALE.SaleDate, CUSTOMER.LastName, CUSTOMER.FirstName, SALE_ITEM.SaleItemID, SALE_ITEM.ItemID, ITEM.ItemPrice
你想要实现的目标是什么,你不相信这个GROUP BY
是合适的?
答案 1 :(得分:0)
使用group by子句时,您选择的列的列表应该是group by子句的一部分,或者它们应该是聚合函数的一部分。在您的情况下,SALE.SaleDate,SALE_ITEM.SaleItemID,SALE_ITEM.ItemID和ITEM.ItemPrice不满足该规则。您需要将这些包含在group by子句中。修复select语句后,当它返回所需的输出时,将其转换为视图。