У меня есть таблица вида:
USER | PLAN | START_DATE | END_DATE
1 | A | 20110101 | NULL
1 | B | 20100101 | 20101231
2 | A | 20100101 | 20100505
В том смысле, что если END_DATE
равно null
, это означает, что у этого пользователя в настоящее время есть этот план активно.
Я хочу запросить: (а) текущий план, который у него активен, или (б) последний план, в котором он участвовал. Мне нужна только одна строка, возвращаемая для каждого данного пользователя.
Теперь мне удалось сделать это с помощью объединений и подзапросов, но бывает, что таблица огромна, и они недостаточно эффективны. У кого-нибудь из вас, ребята, есть способ узнать это быстрее?
Спасибо,
[РЕДАКТИРОВАТЬ] Большинство ответов здесь возвращают одно значение. Это было моим плохим. Я имел в виду вернуть одно значение для каждого пользователя, но для всех пользователей сразу. Я адаптировал ответы, которые мог (и исправил вопрос), но просто прояснил их для использования в будущем.