Объединение связанных записей с несколькими значениями True / False в одну запись

#sql #vba #ms-access

#sql #vba #ms-access

Вопрос:

Я пытаюсь объединить данные собрания классов для большого набора классов на основе многоколоночной логики. Для каждого класса nbr (первый столбец) У меня может быть несколько записей y / n, соответствующих тому, встречается ли класс в этот день или нет. Мне нужно:

Имейте одну запись для каждой комбинации ClassNbr / DayOfWeek / MtgStart / MtgEnd .

Я использовал ConcatRelated() функцию Брауна с большим эффектом, чтобы пройти часть пути, но я в тупике, как правильно выстроить столбцы y / n, и я в тупике, куда идти дальше. Это часть более крупной базы данных Access 2016, и она должна оставаться в ней. Мне удобно использовать VBA, если это необходимо.

Основная проблема:

введите описание изображения здесь

Текущий против Ожидаемый результат в реальном мире:

введите описание изображения здесь

Ответ №1:

Вы должны иметь возможность использовать функции агрегирования:

 select col1, min(a) as a, min(b) as b, min(c) as c
from t
group by col1;
 

Поскольку MS Access хранит «Y» как -1, а «N» как 0, MIN() эквивалентно OR .

Комментарии:

1. Добавлю примечание для будущих пользователей:: Данные поступали в виде текста, поэтому мне пришлось использовать ряд функций IIF () в запросе, чтобы преобразовать их в правильное числовое значение, прежде чем продолжить, как указано выше. например: IIf([a]="Y",-1,0)