Суммировать столбец полей из результата ado-запроса? - PullRequest
2 голосов
/ 29 октября 2011

Хорошо, поэтому я создаю программу, которая использует dbgrid и ado-запросы для работы с таблицами из базы данных Microsoft Access.

Программа предназначена для бизнеса с программой лояльности, участники могут быть зарегистрированы, а покупки должны отслеживаться.Это таблица с транзакциями:

enter image description here

Теперь я хочу выполнить дополнительный запрос, который выберет определенный идентификатор участника из этой таблицы, а затем я хочу добавитьвсе "PointsAwarded" из этого результата Adoquery.Таким образом, я могу получить общее количество очков, заработанных одним участником.

Кажется, что это очень трудно сделать, так как я искал несколько дней и не нашел ничего полезного.

Спасибо за любую помощь!

Ответы [ 2 ]

2 голосов
/ 29 октября 2011

Это не так сложно, если вы знаете, что искать. :)

Вы можете группировать по определенным столбцам, а затем использовать агрегатные функции для других столбцов. В этом случае я группирую все записи для каждого MemberId вместе, чтобы получить сумму присужденных баллов:

select
  t.MemberId,
  sum(t.PointsAwarded) as TotalPoints
from
  Transactions t
group by
  t.MemberId
1 голос
/ 29 октября 2011

Воспользуйтесь ответом Голеза, если хотите получить общее количество набранных баллов за всех участников.

Если вы хотите получить баллы, набранные баллами за конкретного участника, вы можете просто сделать это:

SELECT SUM(PointsAwarded) AS TotalPointsAwarded
FROM Transactions
WHERE MemberID = 3

В приведенном выше примере вы получаете итоговую сумму за член 3.

. Вам нужно будет параметризовать запрос, чтобы вы могли передать свою переменную для идентификатора члена.

Вы захотитечтобы прочитать документы по свойству Parameters для вашего компонента, поскольку оно отличается в разных версиях Delphi.

Однако, после того как вы параметризовали запрос, затем, когда вы вызываете запрос, вы делаете это, где MyADOQuery - это имявашего компонента:

MyADOQuery.Active := False;
MyADOQuery.Parameters.ParamByName('MemberID').Value := 3;
MyADOQuery.Active := True;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...