特定の要因に基づいて、テーブルからいくつかのレコードを取得しようとしています。
要因の 1 つは単に同じテーブルのフィールドを使用することであり、もう 1 つは別のテーブルに結合する場合です。結合したテーブルのレコード数を最初のテーブルのフィールドと比較したいと考えています。以下はサンプルコードです。
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 関数を含めることはできず、having 句にフィールドを含めることはできません。
私はおそらくここで非常に単純なものを見逃しています。しかし、私はそれを理解することはできません。
どんな助けでも大歓迎です。
編集: テーブルの構造を説明する必要がありました。Destinations は単一のレコードであり、LiveCalls テーブルは Destinations 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