2013-04-23 37 views
0

我的查詢是:沒能獲得個人日期查詢結果

SELECT sauda_date,Scrip_Code, 
SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty ELSE 0 END) AS BuyQty, 
SUM(CASE WHEN Buy_sell = 1 THEN Market_Rate ELSE 0 END) AS BuyRate, 
SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty * Market_Rate ELSE 0 END) 
AS BuyAmount, 
SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty ELSE 0 END) AS SellQty, 
SUM(CASE WHEN Buy_sell = 2 THEN Market_Rate ELSE 0 END) AS SellRate, 
(CASE WHEN SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty ELSE 0 END) 
>SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty ELSE 0 END) 
THEN 'BF' ELSE 'BT' END) as TradeType, 
SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty * Market_Rate ELSE 0 END) AS SellAmount, 
SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty ELSE 0 END)- 
SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty ELSE 0 END) as NETQTY, 
SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty * Market_Rate ELSE 0 END)- 
SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty * Market_Rate ELSE 0 END)as NetAmt, 
SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty * Market_Rate ELSE 0 END)- 
SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty * Market_Rate ELSE 0 END) as PNLAmt 
FROM tradeFile where Inst_Type='FUTIDX' OR Inst_Type='FUTSTK' 
    and Sauda_Date between convert(datetime,'1 Mar 2013') 
    and convert(datetime,'4 Mar 2013') group by Scrip_Code,ExpiryDate,sauda_date 

與此查詢我正在歌廳結果爲:

enter image description here

正如我們可以看到2013-03-11有多個記錄。 我想買他們的BuyQty,SellQty等欄目。

SELECT Scrip_Code,sauda_date, 
SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty ELSE 0 END) AS BuyQty, 
SUM(CASE WHEN Buy_sell = 1 THEN Market_Rate ELSE 0 END) AS BuyRate, 
SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty * Market_Rate ELSE 0 END) 
AS BuyAmount, 
SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty ELSE 0 END) AS SellQty, 
SUM(CASE WHEN Buy_sell = 2 THEN Market_Rate ELSE 0 END) AS SellRate, 
(CASE WHEN SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty ELSE 0 END)> 
SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty ELSE 0 END) THEN 'BF' ELSE 'BT' END) 
as TradeType, 
SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty * Market_Rate ELSE 0 END) AS SellAmount, 
SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty ELSE 0 END)- 
SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty ELSE 0 END) as NETQTY, 
SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty * Market_Rate ELSE 0 END)- 
SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty * Market_Rate ELSE 0 END)as NetAmt, 
SUM(CASE WHEN Buy_sell = 2 THEN Trade_Qty * Market_Rate ELSE 0 END)- 
SUM(CASE WHEN Buy_sell = 1 THEN Trade_Qty * Market_Rate ELSE 0 END) as PNLAmt 
FROM tradeFile where Inst_Type='FUTIDX' OR Inst_Type='FUTSTK' 
    and Sauda_Date between convert(datetime,'1 Mar 2013') 
    and convert(datetime,'10 Mar 2013') 
    group by Scrip_Code,convert(datetime,sauda_date) 
    order by convert(varchar(11),sauda_date) 

但我得到結果爲:: 即Datewise總和紀錄

sauda_date scrip_code BuyQty 
2013-03-11 BANKNIFTY 150 [sum for this date] 

我已經試過

enter image description here

請幫助我。

+0

如果您在sqlfiddle中重新創建它,則幫助您更容易。 – IndoKnight 2013-04-23 11:31:33

+0

使用'DATEPART(yy-mm-dd,sauda_date)'並按此列分組。 – Meherzad 2013-04-23 11:34:11

回答

1

變化convert(datetime,sauda_date)datediff(d,0,sauda_date)和組由同一列

SELECT datediff(d,0,sauda_date) sauda_date,Scrip_Code,... 
group by Scrip_Code,ExpiryDate,datediff(d,0,sauda_date); 
+0

等待,似乎在工作 – Freelancer 2013-04-23 11:51:27

+0

我想在這添加sauda_date。我怎樣才能做到這一點? – Freelancer 2013-04-24 07:06:31

1

請嘗試:

SELECT DISTINCT 
    *, 
    SUM(BuyQty) OVER (PARTITION BY CONVERT(NVARCHAR(20), sauda_date, 106)sauda_date), 
    SUM(SellQty) OVER (PARTITION BY CONVERT(NVARCHAR(20), sauda_date, 106)), 
    ..... 
FROM YourTable 
1

到@richardTheKewi類似,但我用轉換鬆動從時間要素日期時間字段

select convert(varchar(10),sauda_date,102) sauda_date,Scrip_Code, ..... 
group by Scrip_Code,ExpiryDate,convert(varchar(10),sauda_date,102)