私は、コホート、タイプ、ステージ、コホート_エバンストラッカーと呼ばれるテーブルをいくつか持っています。コホートテーブルは、チームまたはグループのリストです。タイプテーブルは、コホートに割り当てることができる評価タイプのリストです。タイプテーブルには2種類しかありません。ステージテーブルは、あるタイプ内のステージのリストです(3つのステージがあるとしますが、それ以上のステージを追加できます)。たとえば、タイプ1にはステージ1、ステージ2、ステージ3などがあります。 cohort_eval_trackerは、コホートに割り当てられている評価を追跡するテーブルです。コホートは、前のステージが完了した後にのみステージに割り当てることができます。たとえば、タイプ1のステージ1が1月1日に終了した場合、コホートは1月2日にタイプ2のステージ2になるように割り当てることができます。コホートには両方のタイプを同時に割り当てることができます。コホートにタイプ1のステージ1が割り当てられている場合、タイプ2のステージ2が開始する前にタイプ2のステージ1が終了している限り、同時にタイプ2のステージ2に進むこともできます。SELECTステートメントの作成
評価を最大段階まで割り当て可能なコホートを返すSELECTステートメントを作成したいとします。コホートが評価をしていない場合、私はそれらを返却したい、あるいはコホートが最後のステージに割り当てられていない場合(この例ではステージ3ですが、将来はさらに追加することができます)、そのコホート返される。
╔══════════════╦══════════╦════════╦═════════╦═══════════╦═══════════╗
║ cohortEvalID ║ cohortID ║ typeID ║ stageID ║ startDate ║ endDate ║
╠══════════════╬══════════╬════════╬═════════╬═══════════╬═══════════╣
║ 1 ║ 1 ║ 1 ║ 1 ║ 1/10/2015 ║ 1/11/2015 ║
║ 2 ║ 1 ║ 1 ║ 2 ║ 1/12/2015 ║ 1/22/2015 ║
║ 3 ║ 1 ║ 1 ║ 3 ║ 1/30/2015 ║ 2/1/2015 ║
║ 4 ║ 1 ║ 2 ║ 1 ║ 1/2/2015 ║ 1/3/2015 ║
║ 5 ║ 1 ║ 2 ║ 2 ║ 1/4/2015 ║ 1/5/2015 ║
║ 6 ║ 1 ║ 2 ║ 3 ║ 1/6/2015 ║ 1/7/2015 ║
║ 6 ║ 2 ║ 1 ║ 2 ║ 3/10/2016 ║ 3/16/2016 ║
╚══════════════╩══════════╩════════╩═════════╩═══════════╩═══════════╝
ステージ::
彼らは両方のタイプ1とタイプ2SELECT
cohortID, cohortName
FROM
dbo.cohort
WHERE
cohortID NOT IN (SELECT cohortID
FROM cohort_eval_tracker
WHERE stageID = (SELECT MAX(stageID) FROM stage)
AND endDate < GETDATE())
OR
cohortID NOT IN (SELECT cohortID
FROM cohort_eval_tracker
WHERE stageID = 2 AND (typeID = 1 OR typeID = 2))
Cohort_eval_tracker内のすべての3つの段階を完了しているにもかかわらず、コホート1を返しているので、以下に私の試みは正しくありません。
╔═════════╦═══════════╗
║ stageID ║ stageName ║
╠═════════╬═══════════╣
║ 1 ║ stage1 ║
║ 2 ║ stage2 ║
║ 3 ║ stage3 ║
╚═════════╩═══════════╝
コホート:
╔══════════╦════════════╗
║ cohortID ║ cohortName ║
╠══════════╬════════════╣
║ 1 ║ cohort1 ║
║ 2 ║ cohort2 ║
╚══════════╩════════════╝
タイプ:
╔════════╦══════════╗
║ typeID ║ typeName ║
╠════════╬══════════╣
║ 1 ║ type1 ║
║ 2 ║ type2 ║
╚════════╩══════════╝
あなたの試行で何が間違っていますか?エラー?間違ったデータが返されるあなたはサンプルの期待出力を投稿できますか? – Matt
[何を試しましたか?](http://mattgemmell.com/what-have-you-tried/) – Pred
この場合、それは** cohort2 **でなければなりません戻り値:タイプ1またはタイプ2のすべてのステージを完了していないため返されました。 – mediumM