嗨我有一张桌子,里面有很多可以有两种约会类型的客户。我想要做的是选择两种类型的约会,但是,只有当apptType = 1的日期apptDate在01/01/2016和2016年6月30日之间时。
表格结构
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和2016年6月30日之间的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 for AppTType = 1
答案 0 :(得分:2)
根据Sean Lange的建议,你可以使用exists
来做到这一点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)
使用JOIN的其他方式在
之下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'
的 see working demo 强>
答案 1 :(得分:1)
这是应该非常接近的事情。
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'
)