мс доступ к счетчику значений в столбце, сгруппированных по значениям в другом столбце - PullRequest
0 голосов
/ 18 октября 2018

Я обновляю большой существующий проект, который был изначально создан с помощью макроредакторов в Access.Если я должен преобразовать его в VBA и использовать SQl, я открыт для этого, но если возможно, я бы хотел сохранить как можно более существующую структуру.Существует ряд запросов Select.Один основной запрос, который вызывает другие, чтобы получить некоторые данные.Я думаю, что они посторонние и могут быть заменены правильным выражением в поле столбца

. Это пример типа таблицы, которую я извлекаю из

Table: Students
ID | Class   | Status
1  | English | Enrolled
2  | Math    | Enrolled
3  | English | Dropped
4  | History | Enrolled
5  | English | Dropped
6  | English | Dropped
7  | Math    | Dropped

что яхотел бы, чтобы отображаемый запрос Select был

Select Query: Class Report
    Class   | Enrolled | Dropped
    English |    1     |   3
    Math    |    1     |   1
    History |    1     |   0

. У меня возникли проблемы с выражением в столбце Enrolled, чтобы отделить счетчик только от определенного класса из таблицы Students при отображении его в запросе.,Выражения, которые я пробовал для Enrolled:

Enrolled: DCount("Students", "Status", "Status = 'Enrolled'")

Это выводит общее количество всех студентов, зачисленных в целом. Я не знаю, может ли DCOUNT выбрать только зачисленные определенные классыЯ возился с функцией Count (), но, думаю, мне просто не хватает понимания того, что ожидает это поле, потому что оно не работает вообще.еще раз, если мне придется перейти на VBA, я буду, но я хотел бы попробовать это в этой области.любая помощь будет оценена:)

РЕДАКТИРОВАТЬ Вот как выглядит мое представление Design прямо сейчас с одним из вариантов ответа enter image description here

Работает так, как задумано!

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете сделать условное агрегирование:

select class, 
       sum(iif(Status = 'Enrolled', 1, 0)) as Enrolled,
       sum(iif(Status = 'Dropped', 1, 0)) as Dropped
from Students s
group by class;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...