SQL - агрегирование данных в результирующем наборе с одинаковыми строками и исключение нескольких строк на основе значения одного столбца - PullRequest
1 голос
/ 05 января 2011

У меня есть таблица, в которой есть транзакции по employeeID от TransactionTime.Каждый сотрудник может иметь несколько транзакций, которые происходят одновременно.Например: EmployeeID 1 имеет 2 транзакции в 12. Мне нужно суммировать транзакции по EmployeeID в каждом временном интервале.Таким образом, для employeeID 1 результатом нового столбца (TotalTransactionsByTime) будет 2. Далее, если КОД для данного TransactionTime имеет КОД BAD, мне нужно исключить все транзакции с этим шагом времени.Поэтому для EmployeeID 2 мне нужно исключить все три транзакции из набора результатов, поскольку они имеют КОД «BAD», который аннулирует все транзакции с таким приращением.

МОЙ СТОЛ

|EmployeeID|TransactionTime|CODE|
 1      12                   GOOD
 1      12                   GOOD
 1      5                   GOOD 

 2      1                   BAD --need to omit all 3 transactions for employeeID 2
 2      1                   GOOD 
 2      1                   GOOD

 3      3                   GOOD
 3      3                   GOOD

A correct result would look like:

|EmployeeID | TransactionTime | CODE  | NUMBERTRNS

 1           12         GOOD   | 2
 1                  5          GOOD   | 1
 3                  3          GOOD   | 2

1 Ответ

1 голос
/ 05 января 2011
select mt1.EmployeeID, mt1.TransactionTime, mt1.CODE, count(*) as NUMBERTRNS
    from MyTable mt1
    where mt1.EmployeeID not in (select EmployeeID from MyTable where CODE = 'BAD')
    group by mt1.EmployeeID, mt1.TransactionTime, mt1.CODE
...