Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Как получить из запроса результат COMPUTE


Автор: ALEXPLUS 12.2.2007, 11:22
Как мне получить результат выполнения раздела COMPUTE в запросе? Сами запросы выполняются правильно, результат вывожу в StringGrid, но что с COMPUTE, что без COMPUTE ADOQuery.RecordCount остается одним и тем же.

Автор: Rodman 12.2.2007, 11:28
Цитата(ALEXPLUS @  12.2.2007,  10:22 Найти цитируемый пост)
Сами запросы выполняются правильно, результат вывожу в StringGrid,

зачем так сложно??? DBGrid для этого...

че за COMPUTE???


Цитата(ALEXPLUS @  12.2.2007,  10:22 Найти цитируемый пост)
что с COMPUTE, что без COMPUTE ADOQuery.RecordCount остается одним и тем же


переоткрой запрос, и если что то добавил или удалил - данные обновятся...

Автор: ALEXPLUS 12.2.2007, 20:16
Цитата(Rodman @  12.2.2007,  11:28 Найти цитируемый пост)
зачем так сложно??? DBGrid для этого...

Хочу. 

Цитата(Rodman @  12.2.2007,  11:28 Найти цитируемый пост)
че за COMPUTE???

Приведу выдержку из книги Мамаева и Шкариной "Microsoft SQL Server 2000 для профессионалов"
Цитата

Раздел COMPUTE
Этот раздел позволяет применять к выбираемым столбцам функции агрегирования. Результат агрегирования выводится в отдельной строке после выборки всех данных. Синтаксис разжеда COMPUTE следующий:
Код

COMPUTE
{{ AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM}
(expression)} [,...n]
[BY expression [,...n]]


Аргумент expression должен содержать имя агрегируемого столбца, который включается в результат. Ключевое слово BY определяет, что результат вычисления следует сгруппировать



Пример 
Код

SELECT name, zarplata from table compute sum(zarplata)



Автор: ALEXPLUS 23.2.2007, 08:12
Уважаемые программисты, разве никто не знает куда выводится результат COMPUTE? Если знаете, ПОМОГИТЕ ПОЖАЛУЙСТА!

Если кому-то непонятна суть проблемы постараюсь еще раз объяснить на пальцах.
В T-SQL есть раздел COMPUTE, в котором можно применять агрегирующие функции к столбцам, например суммирование всех значений или среднеарифметическое.

Пример: 
Код

SELECT Name, zarplata FROM sotrudnik COMPUTE sum(zarplata)


Примерно вот такой должен быть результат:

name             zaraplata
------------------------------
Иванов          15000
Петров          11000
Сидоров        20000
Антонов        10000
------------------------------
                      56000

Цифра 56000 является результатом выполнения COMPUTE


Проблема заключается в том, что я не знаю как из компонента ADODataSource (или другого?) вытащить вот эту цифру 56000. Всё остальное (то есть, то что является результатом SELECT Name, zarplata FROM sotrudnik) получить могу. Другими словами Вывод для запроса 
Код

SELECT Name, zarplata FROM sotrudnik
 и 
Код

SELECT Name, zarplata FROM sotrudnik COMPUTE sum(zarplata)
 я получаю один и тот же

К сообшению прилагаю программу для выполнения запросов. Программа конечно простая как амёба, но мне хватает для начала.

Автор: bas 23.2.2007, 10:58
Код

SELECT Name, zarplata FROM sotrudnik 
union
SELECT 'Total', sum(zarplata) FROM sotrudnik 

Автор: ALEXPLUS 24.2.2007, 16:00
bas, как получить сумму по столбцу я знаю. Меня этот вопрос не волнует, я хочу узнать как получить тот же результат имеено с помощью COMPUTE

Автор: superVad 26.2.2007, 12:37
Может это надо запостить не в раздел по делфе а в раздел - Базы данных/масдаевский сервер

Автор: kobra 28.2.2007, 08:26
дело в том что сервер при этом возврашает два набора данних. а датасеты от делфи умеют читать  и выдавать резултат только первого набора. так что вариант bas а в делфи единствены

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)