Sql 不存在的地方X次数

Sql 不存在的地方X次数,sql,Sql,这是一个艰难的过程。我有一个查询,如果不存在可用的约会时间,它将返回可用的约会时间。这很有效。然而,我只想返回它们,如果它们在表中的次数少于X 例如:有一个有3名医生的医生办公室。因此,一天中每小时有3个可用约会。我的查询现在只返回1个可用约会。有什么想法吗?我尝试使用COUNT,但无法使其工作 你可以这样想:where not exist@Xtimes 下面是一个查询,用于检索仅一名医生的可用预约日期 SELECT * FROM TimeScheduleTable WHERE NOT Exis

这是一个艰难的过程。我有一个查询,如果不存在可用的约会时间,它将返回可用的约会时间。这很有效。然而,我只想返回它们,如果它们在表中的次数少于X

例如:有一个有3名医生的医生办公室。因此,一天中每小时有3个可用约会。我的查询现在只返回1个可用约会。有什么想法吗?我尝试使用COUNT,但无法使其工作

你可以这样想:where not exist@Xtimes

下面是一个查询,用于检索仅一名医生的可用预约日期

SELECT * FROM TimeScheduleTable WHERE
NOT Exists (SELECT EmployeeId FROM AppointmentTable
            WHERE EmployeeId= @pEmployeeId AND
            CONVERT(VARCHAR,AppointmentTable.ToDateTime , 101) = @pDate AND 
            (
              (CONVERT(VARCHAR(8), AppointmentTable.ToDateTime, 108) >= TimeScheduleTable.StartTime AND
              CONVERT(VARCHAR(8), AppointmentTable.ToDateTime, 108) <= TimeScheduleTable.EndTime)
              OR
              (CONVERT(VARCHAR(8), AppointmentTable.ToDateTime, 108) >= TimeScheduleTable.StartTime AND
              CONVERT(VARCHAR(8), AppointmentTable.ToDateTime, 108) <= TimeScheduleTable.EndTime)
              OR
              (CONVERT(VARCHAR(8), AppointmentTable.ToDateTime, 108)<= TimeScheduleTable.StartTime AND
              CONVERT(VARCHAR(8), AppointmentTable.ToDateTime, 108) >= TimeScheduleTable.EndTime)
             )
             )

如果你想在某些情况下归还它们,在那里不存在似乎是一个好的开始

然后,您可以按列分组,并实现HAVING子句来限制EXISTS是否返回任何数据

SELECT * 
  FROM TimeScheduleTable 
 WHERE EXISTS ( SELECT EmployeeId 
                  FROM AppointmentTable
                 WHERE EmployeeId= @pEmployeeId 
                   AND ...
                 GROUP BY EmployeeID
                       -- Only return if there are less than 4
                HAVING COUNT(*) <= 3 )

你用的是什么发动机?mysql sqlserver等。感谢您的帮助!我可以通过使用你的代码得到我想要的。我只需要换个新的