Есть условно две таблицы, которые нужно импортировать из Access и объединить:
T1 с полями KOD, Name, Date, G1, G2, GX... (около 200 000 записей) T2 с полями KOD, sGroup, DateIn (около 8 000 записей)
Их нужно объеденить чтобы добавить в T1 поле Group Объединение по полям KOD но в Т2 это поле не уникально, есть вариации записей по полям DateIn и искомому Group. Поэтому должно соблюдаться еще одно условие Date = MAX(диапазон DateIn, где DateIn <=Date)
С импортом в Эксель проблем нет, проблемы с объединением (что в Access, что в Эксле)
Написал такой вот SQL.
Код
SELECT T1.*,
(SELECT TOP 1 sGroup FROM T2 WHERE T1.KOD=T2.KOD ORDER BY DateIn DESC) as GroupName
FROM T1
Вложенный запрос сам по себе работает, но как тольок его вставляю во внешний - запрос начинает отработку и зависает. В Excell - сразу, в Access при попытке получить все резульаты запроса (а так оказывает видимые строки на экране, общее кол-во записей не выводит).
Может кто знает как модифицировать запрос, чтобы он заработал ? Например можно ли заменить вложенный запрос LEFT JOIN ? Ума не приложу как это сделать. Отчегото кажется что JOIN не должен зависать.
SELECT DISTINCT * FROM T1
INNER JOIN T2 ON T1.KOD = T2.KOD AND T1.Date = MAX(диапазон DateIn, где DateIn <=Date 'тут сами разбирайтесь')
WHERE T1.KOD = T2.KOD
Наверное так. А вообще с такими вопросами вам надо на спец.форум по SQL, там быстрее смогут помочь.
Troglodit написал: Отчегото кажется что JOIN не должен зависать.
Если у вас нет индексов по KOD и DateIn, ваша конструкция будет долгой. Лучше так
Код
Select T1.*, T2.sGroup As GroupName
From
(T2
Inner Join
(Select KOD, Max(DateIn) As LastDate From T2 Group By KOD) TG
On (T2.KOD = TG.KOD And T2.DateIn = TG.LastDate)
) Inner Join T1
On (T2.KOD = T1.KOD)
В случае отсутствия индексов Access автоматически создаст временные (всё же рассчитан на начинающих). Но, лучше их создать и настроить. Успехов.