Я не верю, что SQL делает это, поддерживая логику типа AND, встроенную в функцию ранжирования таким образом.Возможно, вам придется разбить его на дальнейшие подзапросы.Некоторый экстремальный псевдо-код:
- Выберите ранг над работой для 'C'
- Полное внешнее объединение выберите ранг над домом для “R”
- Сделать этот подзапросс внешним запросом, выполняющим объединение, и всеми внешними объединениями
Но тогда вам придется иметь дело с COUNT ... OVER ..., и это число не зависит от h.MyType =C или R, что заставляет меня задуматься, не приведет ли этот MAXCOUNT к выравниванию значений ранжирования, которые настолько ограничены.
Все это предполагает, что я правильно понял ... но это сложный запрос, и труднопонимать без знания базовых таблиц и бизнес-логики.