sql - 选择具有特定标准的一组特定客户

标签 sql sql-server

您好,我有一张 table ,里面有很多客户,可以有 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 = 1 和 ApptType=2

最佳答案

根据 Sean Lange 的建议,您可以使用存在来执行此操作

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

关于sql - 选择具有特定标准的一组特定客户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46648960/

相关文章:

sql - PostgreSQL:仅当元素唯一时才将元素附加到 jsonb 数组

sql - 如何将 SQL 查询的数组输出传递给 PostgreSQL (PL/pgSQL) 函数?

sql - linq 在两列上不同并作为单个字段返回

sql - Postgres : How to combine "NOT IN" and JSON "->>"?

sql - 比较子字符串而不是整个字符串

sql-server - 使用 SET ROWCOUNT 安全吗?

sql - 在Oracle sql中以T为状态的最后更改的数据

SQL Server 条件唯一索引

SQL 内连接函数返回表

c# - 如何从除第一列之外的所有列中仅选择一行