SQL查询将记录分组

时间:2013-08-29 05:48:19

标签: sql ms-access

我有一个包含以下列的表:

+-------------------------------------------------+
| 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,因为在两个交易中,两个不同的流量,它是一个买入和卖出(但实际上,现在可以看到不同流量的买入或卖出是好的。)

上表已经是来自更广泛的表的组的结果。我无法想到这样做的好方法,任何帮助都会受到赞赏。

由于

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];