1

次のクエリがあります。

SELECT   
  datediff(d, 0, 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 = convert(datetime,'1 Mar 2013') 
group by Scrip_Code, ExpiryDate, datediff(d,0,sauda_date)

結果:

ここに画像の説明を入力

このクエリは、Buy_Qty、Sell_Qty の合計を日付ごとに取得するためのものです。[このクエストの参照:クエリ結果で個々の日付を取得できません。

しかし、datediff(d,0,sauda_date) 列 (つまり、最初の列) で結果が得られていることがわかりますが、この結果にも sauda_date を日付として追加したかったのです。

このクエリでどのような変更を加える必要がありますか。

クエリに sauda_date を直接追加して試しましたが、エラーが発生します。

私を導いてください。

4

2 に答える 2

1

結果の要件がわからない..

選択リストに sauda_date を追加するだけで、グループごとのリストに含めるとエラーが発生することはありません。

Select datediff(d,0,f.Date), 
       sum(f.price), 
      f.OrderID,
       f.Date
from test f
group by f.Date,OrderID,datediff(d,0,f.Date)

それ以外の場合は、自己結合を使用して、キー列のメイン結果に結合するサウダ日付のみを取得できます

于 2013-04-24T08:20:46.763 に答える