Possible Duplicate:
Combine rows in Access 2007
Access 2007 - Concatenate fields from one column in one table into a single, comma delmited value in another tableобъединения нескольких строк в одной строке в MS Access
В настоящее время у меня структуру таблицы, которая примерно так:
Имя --- Кошка --- Описание изделия - - Трэш --- Проц --- Err --- BP
Боб ------- C1 ------- Inf -------- 7Per -------- 0.05 ------ 0 ----- ADC2
Боб ------- C1 ------- Inf -------- 7Per -------- 0.05 ------ 2 ----- BAC2
Боб ------- C1 ------- Inf -------- 7Per -------- 0.05 ------ 0 ----- RBE2
Боб ------- C1 ------- Inf -------- 7Per -------- 0.05 ------ 8 ----- VBE2
Боб ------- C1 ------- Inf -------- 7Per -------- 0.05 ------ 6 ----- AEC2
Боб ------- C1 ------- Inf -------- 7Per -------- 0.05 ------ 0 ----- PBC2
Боб ------- C2 ------- Com ------ 8Per -------- 0,45 ------ 1 ----- XBC4
Bob ------- C2 ------- Com ------ 8Per -------- 0,45 ------ 0 ----- AEC2
Боб ------- C2 ------- Com ------ 8Per -------- 0,45 ------ 0 ----- PBC2
Bob ------- C2 ------- Com ------ 8Per -------- 0,45 ------ 3 ----- ADC2
Bob - ----- C2 ------- Com ------ 8Per -------- 0,45 ------ 0 ----- ADC2
Bob ---- --- C2 ------- Com ------ 8Per -------- 0.45 ------ 0 ----- BAC2
Joe ------ --C1 ------- Inf --------- 7Per -------- 0.05 ------ 0 ----- PBC2
Joe ---- ---- C1 ------- Inf --------- 7Per -------- 0.05 ------ 0 ----- ZTM2
Joe-- ------ C1 ------- Inf --------- 7Per -------- 0.05 ------ 2 ----- QYC2
Joe -------- C1 ------- Inf --------- 7Per -------- 0.05 ------ 0 ----- FLC2
Joe -------- C1 ------- Inf --------- 7Per -------- 0.05 ------ 1 ----- KSC2
Joe -------- C1 ------- Inf --------- 7Per -------- 0.05 ------ 0 --- --JYC2
То, что я хочу сделать, это иметь 1 строку на «имя» и «кошку», которая суммирует все «Err» (по «Name» и «Cat») и объединяется только поля «BP» в одну строку. Такие, как:
Имя --- Cat --- Desc --- Трэш --- Проц --- Err --- BP
Боб - ------ C1 ------- Inf -------- 7Per -------- 0.05 ----- 16 ----- BAC2, VBE2, AEC2
Bob ------- C2 ------ Com ------ 8Per -------- 0.45 ------ 4 ------ XBC4, ADC2
Joe -------- C1 ------- Inf -------- 7Per -------- 0.05 ------ 3 ------ QYC2, KSC2
Были заданы аналогичные вопросы, но я не могу их применить, поскольку мои знания о сценариях VBA начинаются. Есть ли способ сделать все это через SQL? Если скрипт VBA является единственным вариантом (т. Е. Созданием функции), любая помощь будет принята с большой благодарностью. Заранее спасибо.
Вопрос часть 2:
Я создал функцию в соответствии с руководством Аллена Брауна. Модуль сохраняется как modConcatRelated. Теперь, я пытался запустить этот запрос (Я не уверен, если это правильный SQL, чтобы получить результат, который я ищу):.
SELECT
[Name],
[Cat],
[Desc],
[Thresh],
[Perc],
sum([Err]),
ConcatRelated("[BP]", "make_table_bp", "[Err] = " & [BP])
FROM make_table_bp
GROUP BY
[Name],
[Cat],
[Desc],
[Thresh],
[Perc],
[Err],
[BP];
Он сказал «Ошибка 3061. Слишком мало параметров Ожидаемые 1.» Также он сказал «Неопределенная функция ConcatRelated». Я ищу руководство по созданию правильной инструкции SQL, чтобы я мог правильно вызвать функцию ConcatRelated и дать результат, как показано выше. Еще раз спасибо.
Следующий вопрос:
Что делать, если таблица имеет уникальное поле даты присваиваемого в качестве последнего столбца в таблице. Что-то вроде этого:
Имя --- Cat --- Desc --- Трэш --- Проц --- Err --- BP --- Дата
Bob ------- C1 ------- Inf -------- 7Per -------- 0.05 ------ 0- ---- ADC2-12/02/2011
Боб ------- C1 ------- Inf -------- 7Per -------- 0.05- ---- -2 ----- BAC2--09/05/2011
Боб ------- C1 ------- Inf -------- 7Per ------- -0,05 ------ 0 ----- RBE2--11/02/2011
Bob ------- C1 ------- Inf -------- 7Per -------- 0.05 ------ 8 ----- VBE2--08/14/2012
Боб ------- C1 ------- Inf-- ------ 7Пер -------- 0.05 ------ 6 ----- AEC2--02/25/2009
Боб ------- C1 --- ---- Inf -------- 7Per -------- 0.05 ------ 0 ----- PBC2--07/02/2011
Bob ---- --- C2 ------- Com ------ 8Per -------- 0,45 ------ 1 ----- XBC4--09/05/2011
Bob ------- C2 ------- Com ------ 8Per -------- 0.45 ------ 0 ----- AEC2-02/02/2010
Боб ------- C2 ------- Com ------ 8Per -------- 0,45 ------ 0 ----- PBC2--08/14/2012
Bob ------- C2 ------- Com ------ 8Per -------- 0.45 ------ 3 ----- ADC2-- 05/05/2001
Bob ------- C2 ------- Com ------ 8Per -------- 0.45 ------ 0 --- --ADC2--08/02/2010
Боб ------- C2 ------- Com ------ 8Per -------- 0,45 ------ -0 ----- BAC2--06/17/2010
Joe -------- C1 ------- Inf --------- 7Per ----- --- 0.05 ------ 0 ----- PBC2--08/14/2012
Joe -------- C1 ------- Inf ------ --- 7Per -------- 0.05 ------ 0 ----- ZTM2--09/05/2011
Joe -------- C1 ----- --Inf --------- 7Per -------- 0.05 ------ 2 ----- QYC2--05/17/2010
Joe ----- --- С1 ------- Inf --------- -------- 7Per 0,05 ------ 0 ----- FLC2--3/19/2010
Joe --- ----- С1 ------- Inf --------- -------- 7Per 0,05 ------ 1 ----- KSC2--09/05/2011
Joe -------- C1 ------- Inf --------- 7Per -------- 0.05 ------ 0 ----- JYC2--08/14/2012
Предположим, я хотел построить запрос, чтобы сказать что-то вроде: показать мне все записи, все еще в этом же формате:
Имя --- Cat --- Desc --- Трэш --- Проц --- Err --- BP
Боб ------ -C1 ------- Inf -------- 7Per -------- 0.05 ----- 16 ----- BAC2, VBE2, AEC2
Bob ------- C2 ------ Com ------ 8Per -------- 0.45 ------ 4 ------ XBC4, ADC2
Joe -------- C1 ------- Inf -------- 7Per -------- 0.05 ------ 3 ----- -QYC2, KSC2
Но для диапазона дат 01/01/2009 до 09/31/2011
@HansUp могли бы вы помочь с этим?
Вам нужен VBA пользовательскую функцию для этого. Аллен Браун предоставил один, а также подробный пример того, как его использовать. http://allenbrowne.com/func-concat.html – HansUp
ive выполнил шаги по компиляции функции, но можете ли вы помочь мне создать мой оператор «select» на основе того, что я ищу выше? – JT2013
@HansUp Я использовал ссылку, которую вы ссылались на – JT2013