Мне нужна помощь в группировании результатов приведенной ниже таблицы temp с использованием столбца «rank».Поиск наилучшего совпадения с «нечеткой» логикой ранжирования
таблица температуры (MS SQL) выглядят следующим образом:
student_address | school_address | student_st| school_st| district | districtID | rank
---------------------------------------------------------------------------------------
123 some street | 12 apple way | CT | CT | 322 | 322 | 0.2
123 some street | 33 pear street| CT | NJ | 039 | 039 | 0.1
333 another st. | NULL | VT | NULL | 111 | 111 | 0.0
Я заселена таблица @temp как таковые:
SELECT st.student_address, sc.school_address, st.student_st, sc.district, st.districtID, '0.0' as rank
FROM students st
LEFT OUTER JOIN schools sc
ON st.[District ID] = sc.District
ORDER BY st.[District ID] asc;
Я следовал результатам моей темп таблицы рядом обновления, которые изменили столбец «ранг» на основе определенных правил (например, совпадение между школой и учеником = 0,0, только совпадение округа = 0,1, совпадение в округе & совпадение состояния = 0,2 и т. д.). Конечным результатом является то, что строки с высоким рейтингом, скорее всего, показывают фактическую школу ученика или менее ранжированные ряды.
Где мне нужна помощь - это окончательный запрос. Я по сути хочу вернуть всю информацию о студентах (все строки из исходной таблицы студентов) и , скорее всего, соответствующей школы (определяется по рангу).
Нечто подобное (псевдокод)
select student_address, student_st, student_etc, school_address
from @temp
where rank = max(rank)
group by student_address
Я знаю, что выше не является правильным SQL, но я надеюсь, что это дает вам представление о том, что я пытаюсь достичь?
Спасибо за любые рекомендации.
Спасибо, но то же, что и мой ответ Джеффу внизу. –
Обновлен запрос. @ CodeSherpa –
Спасибо, это сработало для меня. –