简体   繁体   中英

SQL - Aggregating data in a result set with identical rows and eliminating multiple rows based on one column's value

I have a table that has transactions by employeeID by TransactionTime. Each employee may have multiple transactions that occur at the same time. For example: EmployeeID 1 has 2 transactions at 12. I need to sum the transactions by EmployeeID at each time interval. So for employeeID 1, the new column (TotalTransactionsByTime) result would be 2. Next, if the CODE for a given TransactionTime has a CODE of BAD, I need to exclude all transactions at that time increment. So for EmployeeID 2, I would need to exclude all three transactions from the result set because they have a CODE of 'BAD' which nullifies all transactions at that increment.

MY TABLE

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM