|
Антивирус. Ты кто? Вирус. Область
данных! Антивирус. А не вирус? Вирус. 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 для вычисления суммы
данных во временной таблице.
|