2016-07-21 8 views
0

私は多くの列を持つテーブルを持っています。列の1つはAppointmentNoで、この列は1または2のいずれかです(基本的には最初の予定またはフォローアップのいずれかです)。SQL Server 2008 SELECT

列の一部

tblAppoints含ま:

ClientID 
ClientFirstName 
ClientLastName 
ClientAddress 
ClientAppointmentNo 

私はしかし、私はすべてのクライアントを表示したくない、この表からclientID年代を選択しようとしているが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