0

次のようなデータを持つテーブルが 1 つあります。

CUSIP   Quantity  Date           Price
AF0      500000   5/16/2013      1
AE4      400000   5/6/2013      1.0825
AE4      500      5/6/2013      1

列を確認する必要がありCUSIP、同じ日付Dateの重複がある場合は、次の計算を行う必要があります。CUSIP

  1. 重複レコードを表示する代わりに、両方の数量を追加して、1 つのレコード (数量の合計) のみを表示する必要があります。

  2. 価格を次のように再計算します: NewPrice = ((400000 * 1.0825) + (500 * 1.00))/(400000 + 500) = 1.08148

たとえば、上記のデータを使用して、次のような出力を表示する必要があります

CUSIP   Quantity  Date          Price
AF0     500000    5/6/2013      1
AE4     400500    5/6/2013      1.082397004

私の現在のSQLクエリは

Select AVG(Price),CUSIP,Quantity,DATE,Price 
from DailyData where a.Date = '25-12-2011'
GROUP BY CUSIP,DATE

SQLクエリを修正するのを手伝ってください

4

1 に答える 1

3
Select
     CUSIP,
     DATE,
     SUM(Quantity) AS SumQty,
     SUM(Quantity*Price)/SUM(Quantity) AS NewPrice
from
   DailyData a
where
   a.Date = '25-12-2011'
GROUP BY
   CUSIP,DATE

例:

DECLARE @t TABLE (CUSIP varchar(50), Quantity int, SomeDate date, Price decimal(19,9));
INSERT @t VALUES
 ('AF0', 500000, '20130516', 1),('AE4', 400000, '20130506',1.0825),('AE4', 500, '20130506', 1)

Select
     CUSIP,
     SomeDate,
     SUM(Quantity) AS SumQty,
     SUM(Quantity*Price)/SUM(Quantity) AS NewPrice
from
   @t a
GROUP BY
   CUSIP,SomeDate
于 2013-05-09T09:02:46.390 に答える