我有一个包含以下列的表:
+-------------------------------------------------+
| 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 |
+-------------------------------------------------+
(表格经过修改以澄清CLient A在两个流程上进行交易,因此应报告)
我需要查看哪个客户在不同流程的同一交易日期交易相同的RIC代码。
因此,对于上述内容,我希望看到类似的内容:
Client A, AAPL.0, 29/3/13, 2
2,因为在两个交易中,两个不同的流量,它是一个买入和卖出(但实际上,现在可以看到不同流量的买入或卖出是好的。)
上表已经是来自更广泛的表的组的结果。我无法想到这样做的好方法,任何帮助都会受到赞赏。
由于
答案 0 :(得分: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。
希望这有帮助。
答案 1 :(得分:0)
如果你可以忽略流程,那么这可能会成功
SELECT client, [trade date], [ric code], Count(client)
FROM MyTable
GROUP BY client, [trade date], [ric code];