2017-10-17 6 views
0

私は基本的な商品情報と出荷された合計数量(すべての注文品)、その商品が販売された最後の日付、で販売されています。私は最後の販売価格を取得する方法を理解することはできません。これは、私がこれまで持っているもの、私はこの項目がオンになっているすべての行を取得しています。このクエリでSQLで最後に売れた価格を取得する方法

SELECT 
    item_id 
    ,item_desc 
    ,sum(qty_shipped) AS 'Total Qty Shipped' 
    ,count(item_id) AS 'No of times Shipped' 
    ,max(invoice_date) AS 'Last Invoice_date' 
    ,unit_price AS 'Last Price' 
FROM sales_history_report 
WHERE 
    item_id = '1234' 
    AND year_for_period >= '2017' 
    AND sales_location_id like '10' 
GROUP BY 
    item_id 
    ,item_desc 
    ,unit_price 

です。それは

のitem_id、Item_desc、Total_QTY_shipped、no_of_times_shipped、Last_Invoice_date、Last_price
1234、項目1234,4,1,2014-10-15,2.47
1234、アイテム1234,6,1、今、この権利のように見えます、2014-09-20,2.519

しかし、私は項目1234,10,2,2014-10-15,2.47

のitem_id、Item_desc、Total_QTY_shipped、no_of_times_shipped、Last_Invoice_date、Last_price
1234、探しています

助けていただければ幸いです。

+0

質問を編集し、サンプルデータと希望する結果を提供してください。 –

答えて

1

私が正しく理解していれば、あなたは条件付きの集約を使用することができます。

select item_id, item_desc, 
     sum(qty_shipped) as [Total Qty Shipped], 
     count(item_id) as [No of times Shipped], 
     max(invoice_date) as Max_Date, 
     max(case when seqnum = 1 then unit_price end) as [Last Price], 
from (select shr.*, 
      row_number() over (partition by item_id order by invoice_date desc) as seqnum 
     from sales_history_report shr 
    ) shr 
where item_id = 1234 and 
     year_for_period >= 2017 and 
     sales_location_id like '10' 
group by item_id, item_desc; 

コメント:

  • は、列の別名のための単一引用符を使用しないでください。文字列と日付の定数には単一引用符を使用してください。
  • GROUP BYの列は、結果セットの行を定義します。私はあなたがそれにunit_priceをしたいとは思わない。
  • 数値定数には一重引用符を使用しないでください。私はitem_id年が数字であると仮定します。
関連する問題