2013-08-29 3 views
1

У меня есть таблица со следующими столбцами:SQL запросов к группе записей

+-------------------------------------------------+ 
| 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  | 
+-------------------------------------------------+ 

(таблица с поправками, чтобы уточнить, что КЛИЕНТ торгуемого на обоих потоков и, следовательно, должно быть сообщено)

Мне нужно, чтобы получить вид, который клиент торгует одним и тем же кодом RIC в ту же торговую дату, но через разные потоки.

Так выше я ожидал увидеть что-то вроде:

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

2, как в два торгует через два разных потоков, и будучи покупать и продавать (но на самом деле это было бы хорошо, чтобы просто увидеть покупка или продажа в разных потоках на данный момент).

Приведенная выше таблица уже является результатом группы из более широкой таблицы. Я не могу придумать хороший способ сделать это, любая помощь будет оценена по достоинству.

Благодаря

+0

У ваших образцов данных есть разные клиенты в каждой строке? – MatBailie

+0

Вам нужно всего 4 столбца в выводе, а так как у RIC-код будет одинаковым в течение дня, может отличаться два дня, вы хотите сгруппировать его еженедельно или ежемесячно, в этом случае, какой код RIC вам нужен ???? ?? –

+0

Просьба уточнить ожидаемый набор результатов и запись. Вот начальная точка. http://sqlfiddle.com/#!2/828c6/8. Надеюсь это поможет. –

ответ

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; 

Demo: http://sqlfiddle.com/#!2/01055/2.

Надеюсь, что это поможет.

+0

Отлично, самообслуживание работало очарованием. Огромное спасибо. – Patrick

0

Если вы можете игнорировать поток, то это может сделать трюк

SELECT client, [trade date], [ric code], Count(client) 
FROM MyTable 
GROUP BY client, [trade date], [ric code]; 
Смежные вопросы