ODBC SQL IIF с групповой ошибкой функции агрегирования

Вот оператор ODBC SQL, который я хочу выполнить. ODBC - это тип соединения, и запрос выполняется для именованного диапазона электронной таблицы Excel. Лучшее, что я могу сказать, - SQL используется, и все предыдущие запросы работали, как и ожидалось.

select
IIF([Account Name]='Account1','Special Account','Not Special') as AccountType,
IIF([Recipe]='Recipe1','American','Other') as FoodType,
sum([Unpaid])
from MyData
Group by [Account Name]

Вот сообщение об ошибке, которое я получаю.

"Вы попытались выполнить запрос, который не включает указанное выражение как часть статистической функции".

Я знаю, что это означает, что я должен добавить [Рецепт] в группу, чтобы группа выглядела следующим образом.

Group by [Account Name],[Recipe]

Если я сделаю это изменение, оператор SQL будет работать, но у меня не будет выходной группы по обоим полям. Это возвращает результаты, с которыми я не и не могу работать. Я действительно хочу Группировать только по [Имя учетной записи].

Как мне это сделать? Операторы IIF необходимы в этом запросе, чтобы вернуть желаемые результаты.

1 ответ

Если он не входит в составную функцию, он должен быть в группе по. SUM() - это единственная агрегатная функция, которую вы имеете - остальные идут в группе.

select
IIF([Account Name]='Account1','Special Account','Not Special') as AccountType,
IIF([Recipe]='Recipe1','American','Other') as FoodType,
sum([Unpaid])
from MyData
Group by IIF([Account Name]='Account1','Special Account','Not Special'),
IIF([Recipe]='Recipe1','American','Other')
Другие вопросы по тегам