Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2016, 17:35   #1
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию С помощью запроса посчитать сумму по колонкам

Есть такой запрос:
Код:
DataModule1.SQLQuery1.Active:=false;
 DataModule1.SQLQuery1.SQL.Text:=' SELECT everydayrep.Tehnika_Rabota, everydayrep.ZakVsego, everydayrep.ProdVsego, everydayrep.RaznicaVsego'+
                                 ' FROM everydayrep'+
                                 ' WHERE everydayrep.IDCartridga='+IntToStr(curID);
 DataModule1.SQLQuery1.Active:=true;
Заполняю результат этого запроса в StringGrid. Нужно высчитать суммы по полям ZakVsego, ProdVsego, RaznicaVsego.
Могу конечно в цикле при заполнении таблицы посчитать эти суммы. Но как это сделать с помощью SQL-запроса? Это ведь будет правильнее?
edsjeka вне форума Ответить с цитированием
Старый 14.05.2016, 21:28   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Почему правильно? не факт, если выводятс все сразу то получить сумму при заполнении и есть правильно, если выводить надо по-странично, тогда общую сумму только запросом можно получить.
Сумма запросом это select sum(<field>) from ...
come-on вне форума Ответить с цитированием
Старый 02.06.2016, 23:44   #3
Falkon_A
Новичок
Джуниор
 
Регистрация: 02.06.2016
Сообщений: 1
По умолчанию

Если БД SQL Server, то можно сделать так
Код:
DataModule1.SQLQuery1.Active:=false;
 DataModule1.SQLQuery1.SQL.Text:=SQL.Text:=';'+'with cte_everydayrep as(' +
'SELECT      [Tehnika_Rabota] ' +
'           ,[ZakVsego]  '  +
'           ,[ProdVsego] '  +
'           ,[RaznicaVsego] ' +
'           ,'+''''+'1'+''''+' Sort  FROM everydayrep WHERE IDCartridga = '+IntToStr(curID)+ 
') '  +
'SELECT'   +
'            [Tehnika_Rabota]' +
'           ,[ZakVsego]' +
'           ,[ProdVsego] ' +
'           ,[RaznicaVsego] ' +
'           ,Sort '       +
' FROM cte_everydayrep '   +
'UNION ALL SELECT '+''''+
 ''+''''+' as Tehnika_Rabota'  +
 '          ,SUM([ZakVsego]) '  +
 '          ,SUM([ProdVsego]) '  +
 '          ,SUM([RaznicaVsego])' +
 '          ,'+''''+'2'+''''+' Sort '+
 ' FROM cte_everydayrep';
 DataModule1.SQLQuery1.Active:=true;
Или так
Код:
DataModule1.SQLQuery1.Active:=false;
 DataModule1.SQLQuery1.SQL.Text:=' SELECT everydayrep.Tehnika_Rabota, everydayrep.ZakVsego, everydayrep.ProdVsego, everydayrep.RaznicaVsego'+',1 Sort '+
                    ' FROM everydayrep'+
                    ' WHERE everydayrep.IDCartridga= '+IntToStr(curID)+' UNION '+
                    ' SELECT '+''''+''+''''+', SUM(everydayrep.ZakVsego), SUM(everydayrep.ProdVsego), SUM(everydayrep.RaznicaVsego)'+',2 Sort '+
                    ' FROM everydayrep'+
                    ' WHERE everydayrep.IDCartridga= '+IntToStr(curID);
DataModule1.SQLQuery1.Active:=true;
Falkon_A вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнить и посчитать сумму Kek Microsoft Office Excel 2 21.08.2011 10:38
Посчитать сумму из полей Jeka57 БД в Delphi 1 26.12.2010 16:24
Посчитать сумму foxy342 Помощь студентам 4 05.12.2010 19:12
посчитать сумму ряда CHOSEN1 Помощь студентам 6 08.11.2010 08:58
Посчитать сумму логарифм Паскаль, Turbo Pascal, PascalABC.NET 4 20.07.2009 23:16