1

次の列を持つテーブルがあります。

+-------------------------------------------------+
| Client    Flow,   Trade Date, RIC Code, BuySell |
+-------------------------------------------------+
| Client A  Manual  29/3/13     AAPL.O      B     |
| Client A  DMA     29/3/13     AAPL.O      S     |
| Client C  DMA     28/3/13     AAPL.O      B     |
+-------------------------------------------------+

(クライアント A が両方のフローで取引されたため、報告する必要があることを明確にするために表が修正されました)

どのクライアントが同じ RIC コードを同じ取引日に取引したが、異なるフローで取引したかを表示する必要があります。

したがって、上記の場合、次のようなものが表示されると予想されます。

Client A, AAPL.0, 29/3/13, 2 

2 2 つの異なるフローにまたがる 2 つの取引であり、買いと売りです (ただし、実際には、今のところ、異なるフローにまたがる買いまたは売りを見るだけで問題ありません)。

上のテーブルは、より広いテーブルからのグループ化の結果です。これを行う良い方法は考えられません。どんな助けもいただければ幸いです。

ありがとう

4

2 に答える 2

2

自己結合が必要なようです。

あなたが試すことができます :

SELECT t.Client, t.RICCode, t.TradeDate, COUNT(t.Flow) AS CNT 
FROM 
(
    SELECT a.Client, a.RICCode, a.TradeDate, a.FLow
    FROM trades a 
    INNER JOIN trades b ON a.Client = b.Client AND a.RICCode = b.RICCode AND a.TradeDate = b.TradeDate AND a.Flow <> b.Flow
    GROUP BY a.Client, a.RICCode, a.TradeDate, a.Flow
) AS t 
GROUP BY Client, RICCode, TradeDate;

デモ: http://sqlfiddle.com/#!2/01055/2 .

お役に立てれば。

于 2013-08-29T08:52:09.163 に答える
0

フローを無視できる場合、これでうまくいくかもしれません

SELECT client, [trade date], [ric code], Count(client)
FROM MyTable
GROUP BY client, [trade date], [ric code];
于 2013-08-29T08:20:16.503 に答える