Kohort, type, stage, cohort_eval tracker adında bazı tablolarım var. Kohort masası, takımların veya grupların listesidir. Tip tablosu, bir kohorta atanabilecek değerlendirme türlerinin bir listesidir. Tip tablosunda sadece 2 tip vardır. Sahne tablosu, bir türdeki aşamaların bir listesidir (Haydi, 3 aşama olduğunu varsayalım, ancak daha fazla eklenebilir). Örneğin, Tip 1, stage1, stage2, stage3 ... vb. Olabilir. Cohort_eval_tracker, bir grubun atandığı değerlendirmelerin kaydını tutar. Bir kohort sadece bir önceki aşama tamamlandıktan sonra bir aşamaya atanabilir. Örneğin, eğer tip 1 aşama 1, 1 Ocak'ta sona erdiyse, o zaman 2 Ocak'ta 2. aşama 2'yi almak için bir grup atanabilir. Bir kohort her iki tipte de aynı anda atanabilir. Yani bir kohort tip 1 aşama 1 olarak atanırsa, tip 2 aşama 2 başlamadan önce tip 2 aşama 1 sona erdiğinde aynı zamanda tip 2 aşama 2 de alabilirler.Bir SELECT ifadesi oluşturma
Hala maksimum aşamaya kadar değerlendirmelere atanabilecek koroları döndüren bir SELECT ifadesi oluşturmak istiyorum. Eğer bir grup herhangi bir değerlendirmeyi kabul etmediyse, onların iade edilmesini isterim ya da bir kohort son aşamasına geçmezse (bu örnek için bu aşama 3'tür, fakat gelecekte daha fazla eklenebilir) o halde ben o kohortu istiyorum iade edilmek üzere.
╔══════════════╦══════════╦════════╦═════════╦═══════════╦═══════════╗
║ 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 ║
╚══════════════╩══════════╩════════╩═════════╩═══════════╩═══════════╝
Aşama:
ikisinin de tip 1 ve tip 2.SELECT
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 tüm 3 aşamadan tamamladığı halde grubunu 1 döndürmesi nedeniyle aşağıda girişimim doğru değil
╔═════════╦═══════════╗
║ stageID ║ stageName ║
╠═════════╬═══════════╣
║ 1 ║ stage1 ║
║ 2 ║ stage2 ║
║ 3 ║ stage3 ║
╚═════════╩═══════════╝
Kohort:
╔══════════╦════════════╗
║ cohortID ║ cohortName ║
╠══════════╬════════════╣
║ 1 ║ cohort1 ║
║ 2 ║ cohort2 ║
╚══════════╩════════════╝
Tür:
╔════════╦══════════╗
║ typeID ║ typeName ║
╠════════╬══════════╣
║ 1 ║ type1 ║
║ 2 ║ type2 ║
╚════════╩══════════╝
Sizin girişimlerinizde sorun mu var? Hata? Yanlış veri döndü mü? Bir örnek beklenen çıktı gönderebilir – Matt
[Ne denediniz?] (Http://mattgemmell.com/what-have-you-tried/) – Pred
Bu durumda sadece ** cohort2 ** olması gerekir tüm aşamalarını tip 1 veya tip 2'de tamamlamadıkları için döndü. – mediumM