Выберите определенный набор клиентов с определенными критериями

Привет, у меня есть таблица с большим количеством клиентов, которые могут иметь 2 типа назначения. То, что я пытаюсь сделать, это выбрать оба типа назначений, однако, только если apptType = 1 имеет дату apptDate между 01/01/2016 и 06/30/2016.

Структура таблицы

ID ClientID ApptType ApptDate 1 12 1 01/03/2016 2 12 2 12/05/2016 3 90 1 12/31/2015 4 90 2 05/30/2016 

Таким образом, каждый клиент имеет 2 ApptType, 1 и 2 с ApptDate.

Я пытаюсь выбрать всех клиентов и где ApptDate находится между 01/01/2016 и 06/30/2016 для ApptType = 1. Для всех клиентов с указанными критериями я пытаюсь увидеть оба appTtypes

Я пробовал что-то вроде этого, но это только показывает мне apptType = 1

 Select * from tblA where apptType=1 and apptDate between 01/01/2016 and 06/30/2016 

Желаемый Конечный результат:

  ID ClientID ApptType ApptDate 1 12 1 01/03/2016 2 12 2 12/05/2016 

Я надеюсь, что результат покажет мне ApptType = 1 и ApptType = 2 для всех клиентов, которые имеют дату 01/01/2016 – 06/30/2016 для AppTType = 1

Как предложил Шон Ланге, вы можете сделать это, используя

 Select * from tblA T1 where exists ( select 1 from tblA T2 where T2.apptType=1 and T2.apptDate between '01/01/2016' and '06/30/2016' AND T1.ClientId=T2.ClientId) 

Другой способ использования JOINs ниже

 select * from TblA t1 inner Join tblA t2 on T1.ClientId=T2.ClientId AND T2.apptType=1 and T2.apptDate between '01/01/2016' and '06/30/2016' 

посмотреть рабочую демонстрацию

Вот что должно быть очень близко.

 select ID , ClientID , ApptType , ApptDate from YourTable yt where exists ( select * from YourTable yt2 where yt2.ClientID = yt.ClientID AND yt.ApptType = 1 AND yt.ApptDate >= '20160101' AND yt.ApptDate <= '20160630' ) 
Давайте будем гением компьютера.