Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
SQL - суммирование вычисляемого поля

Антивирус. Ты кто?
Вирус. Область данных!
Антивирус. А не вирус?
Вирус. Hи боже мой!
Антивирус. А зачем прерывания перехватываешь?
Вирус. Я?!
Антивирус. Вот же подпрограмма.
Вирус. Это не подпрограмма. Это цитата из Лао-цзы на языке оригинала в альтернативной кодировке.
Антивирус. А зачем EXE-файлы ищешь?
Вирус. А вдруг хозяин спросит: "А где мои ЕХЕ-файлы?" А я ему - вот они!
Антивирус. Сдается мне, что ты все-таки вирус.
Вирус. Hу ладно, только тебе признаюсь, только ты никому не говори! Hа самом деле я... антивирусная вакцина!
Антивирус. А зачем нужна антивирусная вакцина, если есть я?
Вирус. Откуда я знаю? У хозяина спроси.
Антивирус. А если я тебя на всякий случай все-таки грохну?
Вирус. А если я тебя?
Антивирус. Hе получится. У меня управление.
Вирус. А ты свою контрольную сумму давно пересчитывал?
Антивирус. А причем тут моя контрольная... ой!!!
Вирус. То-то же.

Бывают случаи, когда в приложении Delphi, которое для получения доступа к данным использует SQL, необходимо узнать сумму вычисленных данных. Другими словами, необходимо с помощью SQL создать вычисляемое поле и применить к нему функцию SUM.

При выполнении такой операции с SQL-таблицами (например, Local InterBase Server), все достаточно тривиально, и сумма вычисляется простым использованием функции SUM с указанием поля. Например, используя демонстрационную таблицу EMPLOYEE (из базы данных EMPLOYEE.GDB):

 
  SELECT SUM(SALARY / 12)
  FROM EMPLOYEE
Та же самая методика применима в случае возвращаемого набора данных, в котором значения группируются в другом столбце с помощью утверждения GROUP BY:
  SELECT EMP_NO, SUM(SALARY / 12)
  FROM EMPLOYEE
  GROUP BY EMP_NO
  ORDER BY EMP_NO

Пока SQL базы данных поддерживают суммирование вычисляемых полей, локальный SQL этого делать не будет. Для получения результатов нужны другие методы, например копирование результатов запроса с вычисляемым полем во временную таблицу (как и в случае компонента TBatchMove), и использование компонента TQuery для вычисления суммы данных во временной таблице.

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay