2017-09-15 114 views
0

我對SQL非常陌生,正在努力完成一些任務以提高我的知識水平。不過,我發現自己陷入了一個問題。
我用乘法和減法,這是我用下面的命令完成,以找到項目的利潤總額:在SQL總結和兩個表上的組

select 
    production.product.ProductID, 
    StandardCost, 
    sales.SalesOrderDetail.OrderQty, 
    UnitPrice, 
    (sales.SalesOrderDetail.UnitPrice*sales.SalesOrderDetail.OrderQty)- 
    (production.product.StandardCost*sales.salesorderdetail.OrderQty) as 
    'Total Profit' 
from 
    sales.SalesOrderDetail, 
    production.product 

我需要做的就是和利潤總額和組它由產品ID爲了找到最賺錢的項目和最不賺錢。我認爲這會工作:

select 
    production.product.ProductID, 
    StandardCost, 
    sales.SalesOrderDetail.OrderQty, 
    UnitPrice, 
    sum((sales.SalesOrderDetail.UnitPrice*sales.SalesOrderDetail.OrderQty)- 
    (production.product.StandardCost*sales.salesorderdetail.OrderQty)) as 
    'Total Profit' 
from 
    sales.SalesOrderDetail, 
    production.product 
group by 
    Production.Product.ProductID 

不過,我收到以下錯誤:

,因爲它不是在聚合函數或載列「production.product.StandardCost」在選擇列表中無效GROUP BY子句。

我不知道該怎麼繼續。我嘗試重新安排和做內/左連接,但我一直沒有成功。

回答

0

因此對於分組,您需要在分組中聲明聚合或包含。 您正在按產品ID進行分組,但其他列未彙總,並且不在按語句組合。

的修正可以(取決於你想如何聚合其他列)

select 
    production.product.ProductID 
    , avg(StandardCost) as AvgCost 
    , sum(sales.SalesOrderDetail.OrderQty) as TotalQuantity 
    , avg(UnitPrice) as AvgUnitPrice 
    , sum((sales.SalesOrderDetail.UnitPrice*sales.SalesOrderDetail.OrderQty)- 
     (production.product.StandardCost*sales.salesorderdetail.OrderQty)) as [Total Profit] 
from sales.SalesOrderDetail 
, production.product 
group by Production.Product.ProductID