Итак, я хочу объединить две таблицы вместе, но для каждой строки в первой таблице я хочу присоединить ее только к 8-м верхним соответствующим строкам в другой таблице, упорядоченным по одному из столбцов в этой таблице. Любой умный синтаксис, который я могу использовать, или мне нужно запутаться в подзапросах?
Посмотрите на
Как выбрать первую / наименьшую / максимальную строку для группы в SQL
Раздел Выберите первые N строк из каждой группы
Это немного сложнее решать. Нахождение одной строки от каждого группа легко с агрегатом SQL функции (MIN (), MAX () и т. д.). Нахождение первых нескольких от каждого группа не возможна с этим методом потому что агрегатные функции только вернуть единственное значение. Тем не менее, это можно сделать.
Возможно, это не лучшее решение, но, скажем, вы присоединяетесь к ID, вы можете использовать подзапрос в предложении where.
select from table1 where id in (select top 8 id from table2 order by column1 desc)