2011-01-05 45 views
1

我有一個表由transactionID根據employeeID進行的事務處理。每個員工可能有多個同時發生的交易。例如:EmployeeID 1在12處有2個事務。我需要按照每個時間間隔由EmployeeID對事務進行求和。因此,對於employeeID 1,新列(TotalTransactionsByTime)結果將爲2.接下來,如果給定TransactionTime的CODE的代碼爲BAD,則需要排除當時的所有事務增量。因此,對於EmployeeID 2,我需要從結果集中排除所有三個事務,因爲它們的代碼是'BAD',這會使該增量處的所有事務無效。SQL - 使用相同行聚合結果集中的數據,並根據一列值刪除多行

我的表

|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
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 
相關問題