2016-07-21 9 views
0

У меня есть таблица с большим количеством столбцов. Один из столбцов - AppointmentNo, и этот столбец может быть либо 1, либо 2 (в основном это либо первая встреча, либо последующая запись).SQL Server 2008 SELECT

Некоторые из колонок включают

tblAppoints:

ClientID 
ClientFirstName 
ClientLastName 
ClientAddress 
ClientAppointmentNo 

Я пытаюсь выбрать clientID «S из этой таблицы, однако, я не хочу видеть все клиенты, где ClientAppointmentNo = 2. Так что только покажите клиентам, у которых есть AppointmentNo = 1, без клиентов с ClientAppointmentNo = 2.

ответ

2

Вот один способ, с помощью агрегации:

select a.clientId 
from tblAppoints a 
group by a.clientId 
having max(ClientAppointmentNo) = 1; 

Если вы хотите, чтобы увидеть детали назначения, то один метод использует оконные функции:

select a.* 
from (select a.*, 
      max(ClientAppointmentNo) over (partition by a.clientId) as maxcan 
     from tblAppoints a 
    ) a 
where maxcan = 1; 
+0

Спасибо! Оба способа работают! – user6576015