Я пытаюсь написать SQL-запрос, который возвращает только сотрудников, которые имеют несколько транзакций в одну дату (count (TransactionDate)> 1), но транзакции произошли в разных идентификаторах магазина. Я пытаюсь использовать комбинацию совокупности и иметь, но не могу возвращать правильные значения. Может ли временная таблица быть лучшим способом сделать это, или, может быть, sub-запрос? Мой нижний запрос не возвращает точные записи. Любая помощь приветствуется. Благодаря!SQL Count Aggregate with Multiple having Conditions
EmployeeID | StoreID | TransactionDate
--------------------------------------
1 | 1 | 2016-09-09 --should be returned
--------------------------------------
1 | 2 | 2016-09-09 --should be returned
--------------------------------------
1 | 3 | 2016-09-09 --should be returned
--------------------------------------
1 | 1 | 2016-09-18 --should not be returned
--------------------------------------
2 | 1 | 2016-09-09 --should not be returned
--------------------------------------
2 | 1 | 2016-09-09 --should not be returned
--------------------------------------
3 | 1 | 2016-09-09 --should not be returned
--------------------------------------
4 | 5 | 2016-09-09 --should be returned
--------------------------------------
4 | 6 | 2016-09-09 --should be returned
select top 1000 EmployeeID, StoreID, TransactionDate, count(StoreID)[StoreCount], count(TransactionDate)[Transaction Count]
from myTable
group by EmployeeID, StoreID, TransactionDate
having count(StoreID) > 1 and count(TransactionDate) > 1
order by TransactionDate desc
Какой rdbms? sql-sever, mysql, oracle, ...? Это имеет значение, потому что это прекрасный пример для оконных функций. – Matt