Я работаю с запросом доступа в Excel VBA. Моя таблица содержит смесь более общих и специализированных продуктов, столбец со строками, например:
Mountain bike x2321, 10
Enduro Mountain bike special y3233, 20
Mountain bike a2a321, 10
Skateboard z23233, 10
Skateboard y2dsf3, 10
Skadeboard pro advanced special 20, etc
Я хотел бы суммировать значения продаж, и я хотел бы агрегировать суммы по категориям, указанным в отдельной таблице B, словаре с подстроками: (
Специально для горных велосипедов, Скейтборд для горных велосипедов про скейтборд.
Я отсортировал таблицу в порядке убывания, чтобы более длинные имена отображались перед более короткими. При сортировке ожидается, что JOIN приведет к тому, что Scateboard pro будет проверен на существование против любой записи до того, как Scateboard будет протестирован.
Мой ожидаемый результат будет
Mountain bike special Total 20
Mountain bike Total 20
Skateboard pro Total 20
Skateboard Total 20
Однако мой запрос включает все горные велосипеды, даже специальные, и все скейтборды, даже профессиональные, что неверно. Я бы хотел, чтобы они были объединены в отдельные категории. Сортировка по убыванию моего TableB, мой словарь не помог. :
Mountain bike special Total 20
Mountain bike Total 40
Skateboard pro Total 20
Skateboard Total 40
Мой предпринятый запрос включает поиск с LIKE и подстановочными знаками, он выглядит следующим образом:
SELECT "" Как kod, sum(b) Как wartosc, TableB.Descr как opis_grupy
FROM TableA LEFT JOIN TableB ON TableA.Descr LIKE (""+TableB.Descr+"")
ГДЕ TableA.a НЕ NULL
СГРУППИРОВАТЬ ПО TableB.Descr
ORDER BY TableB.Descr DESC
К сожалению, такой запрос не суммирует правильно. Я обдумывал использование FIRST np. http://www.mrexcel.com/forum/excel-questions/417807-sql-join-question-excel-access-only-return-first-join-instance.html (сначала функция восстановления), но Я понятия не имею, как это реализовать, чтобы запрос суммировался так, как ожидалось. Спасибо, что выручили меня.
order by
никак не влияет на результатjoin
. - person JimmyB   schedule 29.04.2015