Если я удаляю счетчик И groupBY, запрос будет запущен, и я вижу список меток, которые я создаю для "MemoryText".
В этом случае сохраните версию, которая работает как qryBase:
SELECT [system_info].[id]),
IIF(Left([system_info].[CSMemory],Len([system_info].[CSMemory])-3) < 512000, "<512mb",
IIF(Left([system_info].[CSMemory],Len([system_info].[CSMemory])-3) < 1000000, "512mb - 1GB", "nope")) as MemoryText
FROM system_info;
Тогда ваш совокупный запрос может быть:
SELECT MemoryText, count(id) as CountofID
FROM qryBase
GROUP BY MemoryText;
Редактировать : Однако это выражение меня озадачивает:
Left([system_info].[CSMemory],Len([system_info].[CSMemory])-3) < 512000
Вместо 512000 я бы ожидал 524288 (512 * 1024).
И выводом Left () будет String, поэтому ваше выражение сравнивает строку с числом. Хотя ядро базы данных может преобразовать строку в число перед сравнением, я бы сделал это явно.
Val(Left([system_info].[CSMemory],Len([system_info].[CSMemory])-3)) < 524288
Вы можете получить более точные предложения, если сообщите нам тип данных вашего поля CSMemory и покажете нам некоторые примеры значений.
Edit2 : из справки Access ': Функция Val прекращает чтение строки с первого символа, который она не может распознать как часть числа.
Таким образом, Val ("2052644 КБ") будет игнорировать нецифровые символы и даст вам число 2052644. Однако ваши значения выборки также включают запятые, поэтому Val () прекратит чтение с первой запятой ... Val ( «2 052 644 КБ») даст вам 2.
Если ваш запрос выполняется в сеансе Access с Access 2000 или новее, вы можете использовать функцию Replace (), чтобы убрать запятые (заменить запятые на строки нулевой длины), прежде чем оценивать текст с помощью Val (). В ближайшем окне:
? Replace("2,052,644 KB", ",", "")
2052644 KB
? Val(Replace("2,052,644 KB", ",", ""))
2052644
Таким образом, вместо использования Left () и Len (), вы можете использовать:
Val(Replace(CSMemory, ",", "")) < 512000