2015-03-26 3 views
0

В моем запросе должен быть показан только учащийся, который зачислен. У каждого студента есть несколько дат регистрации. Если одной из этих дат регистрации является дата выпадения, они не должны включаться в результаты. Мои столбцы: StudentNumber, дата регистрации, действие. Если они выпадут, у них будет «D» под действием. Я не уверен, как отфильтровать учащихся, поскольку каждый из них имеет несколько дат. Должен ли я использовать оператор If Else или Case или что-то в предложении where. Если кто-нибудь может указать мне в правильном направлении. Благодаря!Если Else, Case или что-то еще

+0

Что вы пытаетесь до сих пор? Можете ли вы показать образцы данных и желаемые результаты? – Becuzz

+0

Какая у вас схема? Если у каждого ученика есть несколько дат регистрации, есть ли у вас таблица со студентами для участия в зачислении? –

+0

Даты и действия находятся на одном столе. И если есть дата выпадения, это не обязательно MAX или текущая дата. – user29617

ответ

0

Это трудно сделать без лучшей идеи вашей схемы, но что-то подобное может работать для вас:

SELECT e1.* FROM Enrollments e1 
LEFT JOIN (
    SELECT StudentNumber FROM Enrollments 
    WHERE Action = "D") dropped ON dropped.StudentNumber = e1.StudentNumber 
WHERE dropped.StudentNumber IS NULL 
+0

Это очень помогает, спасибо! – user29617

+0

Нет проблем. Спасибо, что согласился. –

Смежные вопросы