次のクエリがあります。
SELECT sauda_date,
ExpiryDate,
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,'" + dtpForDate.Value.Date.ToShortDateString() + "') and
convert(datetime,'" + dtpToDate.Value.Date.ToShortDateString() + "')
group by Scrip_Code,ExpiryDate,sauda_date
order by Scrip_Code,ExpiryDate,sauda_date
このクエリにより、次の結果が得られます。
このクエリでは、sudadate によるグループを使用しています。また、サウダデートで注文。
2013 年 2 月 28 日がついに表示され、2013 年 3 月 1 日、2013 年 3 月 2 日、2013 年 3 月 22 日からさらにリストが表示されます。
レコードを順番にグループ化したかったのです。つまり、2013 年 2 月 28 日、次に 2013 年 3 月 1 日、2013 年 3 月 2 日、2013 年 3 月 3 日...
上記のクエリでどのような変更を行う必要がありますか?
order by を削除しても、上記のクエリの結果に違いはありません。
同様に変換(varchar(11),sauda_date)
しても違いはありません。
sauda_date は nvarchar です
私の意図した結果:
Sauda_Date Expiry_Date ScripCode
28 Feb 2013 ..... ADANIENT
1 MAR 203 ...... ADANIENT
1 Mar 2013 ....... ADANIENT
28 FEB 2013 ....... TCS
2 MAR 2013 .... TCS