2016-05-23 8 views
0

私は、一時テーブルや変数を使用することができないなど、SQLの能力が非常に限られているVolusion用に作成したクエリを持っています。このタスクを実行します。グループの後のSQL sum by

私は必要な情報を提供するこのクエリを持っていますが、実行後にExcelでそれを処理しなければなりません。必要な結果を得るためにクエリを取得したいと思います。

私が最終的に必要とするのは、google_genderとrep ... summedによる費用/利益です。 変数や一時テーブルを使用せずにこれを実現する方法はありますか?

は、ここに私の現在のクエリです:

SELECT 
    Products_Joined.Google_Gender, 
    REPLACE(REPLACE(REPLACE(REPLACE(Customers.SalesRep_CustomerID,379646,'Dan'),658024,'Owen'),643352,'Mary'),584310,'Pete') as SalesRep, 
    SUM(OrderDetails.ProductPrice)*OrderDetails.Quantity as TotalSold, 
    SUM(OrderDetails.Vendor_Price)*OrderDetails.Quantity as VendorCost, 
    SUM(OrderDetails.ProductPrice)*OrderDetails.Quantity-(OrderDetails.Vendor_Price)*OrderDetails.Quantity as Profit 
FROM 
    Products_Joined, OrderDetails, Orders, Customers 
WHERE 
    Products_Joined.ProductCode=OrderDetails.ProductCode 
    AND OrderDetails.OrderID=Orders.OrderID 
    AND Orders.CustomerID=Customers.CustomerID 
    AND Orders.OrderDate BETWEEN '05/01/16 00:00' and '05/31/16 23:59' 
    AND Customers.SalesRep_CustomerID in ('379646' , '658024' , '643352' , '584310') 
    AND Orders.OrderStatus <> 'Cancelled' 
GROUP BY  
    Products_Joined.Google_Gender, 
    OrderDetails.Quantity, 
    OrderDetails.Vendor_Price, 
    OrderDetails.ProductPrice, 
    Customers.SalesRep_CustomerID 

クエリは、結果ファイル内の各注文番号とSKU、私ドンから「販売価格」、それの行を取得するには、たOrderDetailsからアイテム情報を引き出すために持っているので、必要がない、私はちょうどrepによって各google_genderによって総額が必要です。 4人の担当者しかいないでしょう:)

+0

は、いくつかのサンプルデータを記述して説明すると、現在のクエリに何の問題があるのか​​を簡単に知ることができます。 – swe

+2

確かに実行できます。ここで答えを得るのは素晴らしいことです。 https://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/また、実際にANSI-92スタイルの結合を使用する必要があります。彼らは20年以上も前から存在し続けてきました。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx –

+0

swe、現在のクエリは正常に動作します。 SQLでデータを集計したいので、レポートを実行した後にExcelで作業する必要はありません。 – M21

答えて

2

性別/担当者ごとにSUMを取得するには、他のグループ化レベルを取り除く必要があります。どんなスキーマやデータもなく、私はちょうど推測していますが、これはあなたが望むものを与えるかもしれません。

SELECT 
    Products_Joined.Google_Gender, 
    REPLACE(REPLACE(REPLACE(REPLACE(Customers.SalesRep_CustomerID,379646,'Dan'),658024,'Owen'),643352,'Mary'),584310,'Pete') as SalesRep, 
    SUM(OrderDetails.ProductPrice*OrderDetails.Quantity) as TotalSold, 
    SUM(OrderDetails.Vendor_Price*OrderDetails.Quantity) as VendorCost, 
    SUM(OrderDetails.ProductPrice*OrderDetails.Quantity)-SUM(OrderDetails.Vendor_Price*OrderDetails.Quantity) as Profit 
FROM 
    Products_Joined, OrderDetails, Orders, Customers 
WHERE 
    Products_Joined.ProductCode=OrderDetails.ProductCode 
    AND OrderDetails.OrderID=Orders.OrderID 
    AND Orders.CustomerID=Customers.CustomerID 
    AND Orders.OrderDate BETWEEN '05/01/16 00:00' and '05/31/16 23:59' 
    AND Customers.SalesRep_CustomerID in ('379646' , '658024' , '643352' , '584310') 
    AND Orders.OrderStatus <> 'Cancelled' 
GROUP BY  
    Products_Joined.Google_Gender, 
    Customers.SalesRep_CustomerID 

すべてのOrderDetailsはSUM関数内にあることに注意してください。

+0

ありがとう、私はこれを最初に試しました:これは私が試したときに得たものです:あなたのSQLは無効です:列 'OrderDetails.Quantity'は集計関数に含まれていないため選択リストでは無効です。 GROUP BY句。 – M21

+1

GROUP BY句だけでなく、SUM式を変更しました。 –

+0

うわー、今すぐ見る。それは私が必要としていたことです、ありがとう! – M21