0

我有一张表,其中包含如下数据:

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

我需要检查列CUSIPDate如果我在同一日期有重复CUSIP,那么我需要进行以下计算。

  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 回答