-1

次のクエリを起動しています>>

SELECT sauda_date, 
   Sum(CASE 
         WHEN buy_sell = 1 
              AND scrip_code = 'ADANIENT' 
              AND sauda_date BETWEEN CONVERT(DATETIME, '1 Mar 2013') AND 
                                     CONVERT(DATETIME, '1 Apr 2013') THEN 
         trade_qty 
         ELSE 0 
       END)            AS BuyQty, 
   Sum(CASE 
         WHEN buy_sell = 2 
              AND scrip_code = 'ADANIENT' 
              AND sauda_date BETWEEN CONVERT(DATETIME, '1 Mar 2013') AND 
                                     CONVERT(DATETIME, '1 Apr 2013') THEN 
         trade_qty 
         ELSE 0 
       END)            AS SellQty, 
   Sum(CASE 
         WHEN buy_sell = 1 
              AND scrip_code = 'ADANIENT' THEN trade_qty 
         ELSE 0 
       END) - Sum(CASE 
                    WHEN buy_sell = 2 
                         AND scrip_code = 'ADANIENT' THEN trade_qty 
                    ELSE 0 
                  END) AS CarryForword 
FROM   tradefile 
WHERE  scrip_code = 'ADANIENT' 
GROUP  BY sauda_date 

そして、私は次の結果を得ています:

    sauda_date | Buy_Qty | SellQty | CarryForward

   01 Mar 2013     2000      0         2000
   01 Mar 2013        0     2000          0
   01 Mar 2013     4000      0         4000
   02 Mar 2013        0     1000       3000
   02 Mar 2013     2000       0        5000
   03 Mar 2013        0     4000       1000

しかし、私はそれが欲しかった:

    sauda_date | Buy_Qty | SellQty | CarryForward

   01 Mar 2013     6000     2000       4000
   02 Mar 2013     2000     1000       5000
   03 Mar 2013        0     4000       1000

表からわかるように:

CaryyForward=Buy_Qty-Sell_Qty;

01 Mar 2013 is date and Buy_Qty=sum(buy_Qty) for 01 Mar 2013.
02 Mar 2013 is date and Buy_Qty=sum(buy_Qty) for 02 Mar 2013.

[Sell_Qty と CarryForward についても同じ]。

場合に備えて別のグループで試してみましたが、場合に許可されていないことがわかりました。

また、別の where 条件を使用してみましたが、うまくいきませんでした。

私を助けてください。

4

4 に答える 4

1

クエリをサブクエリに入れます。

SELECT  sauda_date , 
        MAX(Buy_Qty) Buy_Qty,
        MAX(SellQty) SellQty, 
        MAX(CarryForward) CarryForward
FROM
        (
            -- ...put your current query here ...
        ) x
GROUP   BY sauda_date
于 2013-04-04T06:39:11.460 に答える
0

私のデータベースにも時間が接続されています。そのため、タイミングが異なるため、日付が異なりました。

だから私はクエリを次のように書きました:

select CONVERT(VARCHAR(11),sauda_date) AS sauda_date,SUM(CASE WHEN Buy_sell = 1 and scrip_code='ADANIENT' and Sauda_Date between convert(datetime,'1 Mar 2013') and convert(datetime,'1 Apr 2013') THEN Trade_Qty ELSE 0 END) AS BuyQty,SUM(CASE WHEN Buy_sell = 2 and scrip_code='ADANIENT' and Sauda_Date between convert(datetime,'1 Mar 2013') and convert(datetime,'1 Apr 2013') THEN Trade_Qty ELSE 0 END) AS SellQty ,     SUM(CASE WHEN Buy_sell = 1 and scrip_code='ADANIENT' THEN Trade_Qty ELSE 0 END) -SUM(CASE WHEN Buy_sell = 2 and scrip_code='ADANIENT' THEN Trade_Qty ELSE 0 END) AS CarryForword from tradefile where scrip_code='ADANIENT' group by CONVERT(VARCHAR(11),sauda_date)

そしてこれはうまくいきました。

于 2013-04-04T07:30:54.357 に答える