我试图根据某些因素从表中获取一些记录。
一个因素只是同一张表上的字段,另一个是当加入另一个表时,我想将加入表中的记录数与第一个表上的字段进行比较。下面是一个示例代码。
select * from tDestinations D
left join tLiveCalls LC on LC.DestinationID = D.ID
where D.ConfigurationID = 1486
AND (D.Active = 1 AND D.AlternateFail > GETDATE())
-- Having COUNT(LC.ID) = D.Lines
现在从上面的代码中,我不能在 where 子句中使用 Count 函数,并且如果没有在函数中,我也不能在 have 子句中拥有字段。
我可能在这里遗漏了一些非常简单的东西。但我想不通。
任何帮助表示赞赏。
编辑:我很抱歉应该解释表的结构,目的地是单个记录,LiveCalls 表可以根据目的地 ID(外键)保存多条记录。
非常感谢大家的帮助。我的最终代码:
select D.ID, D.Description, D.Lines, D.Active, D.AlternateFail, D.ConfigurationID, COUNT(LC.ID) AS LiveCalls from tDestinations D
left join tLiveCalls LC on LC.DestinationID = D.ID
where D.ConfigurationID = @ConfigurationID
AND (D.Active = 1 AND D.AlternateFail > GETDATE())
GROUP BY D.ID, D.Description, D.Lines, D.Active, D.AlternateFail, D.ConfigurationID
HAVING COUNT(LC.ID) <= D.Lines