2014-10-27 48 views
-2

我無法創建我的視圖,我不知道如何解決它。 當試圖創建視圖時,它嘗試將所有列從select中添加到group by,這不是我想要的。併爲您查詢由不被用像SUM()AVG()公式彙總任何列工作,必須組不反正ORACLE選擇列表與組不一致

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

工作秩序。在你的情況下GROUP BY SALE.SaleID, SALE.SaleDate, CUSTOMER.LastName, CUSTOMER.FirstName, SALE_ITEM.SaleItemID, SALE_ITEM.ItemID, ITEM.ItemPrice

你想完成什麼,你不相信這個GROUP BY是合適的?

+0

即使它們是組中的一部分也會失敗 – 2014-10-27 19:27:59

+0

修復GROUP BY之後它會給您帶來什麼錯誤?我猜測是因爲你沒有給SUM()或AVG()字段一個明確的列名,例如SUM(SALE_ITEM.ITEMPRICE)作爲sumOfItemPrice,它可能會導致這種錯誤。 – JNevill 2014-10-27 19:29:42

+0

添加別名幫助,我不明白爲什麼錯誤輸出是如此無意義 – 2014-10-27 20:35:54

0

使用group by子句時,所選列的列表應該是group by子句的一部分,或者應該是聚合函數的一部分。在你的情況SALE.SaleDate,SALE_ITEM.SaleItemID,SALE_ITEM.ItemID和ITEM.ItemPrice不滿足該規則。您需要將這些添加到您的group by子句中。一旦你修復了select語句,並且它將所需的輸出轉換成視圖。

+0

即使他們是由它組的一部分失敗。 – 2014-10-27 19:21:50