2013-05-09 74 views
0

我有有這樣一個數據表:如何查找sql​​中的重複記錄並對列進行計算?

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 

Plase HEL p我糾正我的SQL查詢

回答

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 
+0

還需要指定'Quantity'在'GROUP BY'聲明? – Neo 2013-05-09 09:06:48

+0

@ashuthinks:no。您可以將它聚合或GROUP:不是兩者 – gbn 2013-05-09 09:07:13