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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2014, 21:10   #1
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию сгруппировать и просуммировать

Здравствуйте, уже весь мозг сломал...

Код:
SELECT Obrabotka.koddet, Obrabotka.kodoper, Texnoper.Namepro, Nomenklat.NameIzd, Obrabotka.kolvo
FROM  Obrabotka 
LEFT OUTER JOIN Texnoper ON Obrabotka.kodoper=Texnoper .Kodik
LEFT OUTER JOIN Nomenklat ON Obrabotka.koddet=Nomenklat.Kode
вот такая сборная таблица есть, мне нужно сгруппировать по Nomenklat.NameIzd и у уникальных NameIzd нужно просуммировать поле Obrabotka.kolvo.

т.е. должно остаться

Рассечка с торсионом 5
Обжим по трубе 1
Пика купольная 124
Изображения
Тип файла: png Безымянный.png (4.1 Кб, 89 просмотров)
ayPinki вне форума Ответить с цитированием
Старый 18.12.2014, 21:50   #2
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от ayPinki Посмотреть сообщение
нужно просуммировать поле Obrabotka.kolvo
Код:
SELECT Obrabotka.koddet, Obrabotka.kodoper, Texnoper.Namepro, Nomenklat.NameIzd, Obrabotka.kolvo, SUM(Obrabotka.kolvo)
...

Не то?
kropotkina-alice вне форума Ответить с цитированием
Старый 18.12.2014, 21:58   #3
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
Печаль

Цитата:
Сообщение от kropotkina-alice Посмотреть сообщение
Код:
SELECT Obrabotka.koddet, Obrabotka.kodoper, Texnoper.Namepro, Nomenklat.NameIzd, Obrabotka.kolvo, SUM(Obrabotka.kolvo)
...

Не то?
потом Group By делать, а только по Nomenklat.NameIzd - не получится, другие столбцы тоже надо группировать, и в итоге ничего не получится, тут надо как то хитрее
ayPinki вне форума Ответить с цитированием
Старый 18.12.2014, 22:16   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
т.е. должно остаться
Цитата:
другие столбцы тоже надо группировать
Изначально было слышно про две колонки - наименование и количество. Откуда другие?
Код:
SELECT Nomenklat.NameIzd, SUM(Obrabotka.kolvo)
  FROM  Obrabotka 
  LEFT OUTER JOIN Nomenklat ON Obrabotka.koddet=Nomenklat.Kode
  GROUP BY Nomenklat.NameIzd
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.12.2014, 10:30   #5
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Изначально было слышно про две колонки - наименование и количество. Откуда другие?
Код:
SELECT Nomenklat.NameIzd, SUM(Obrabotka.kolvo)
  FROM  Obrabotka 
  LEFT OUTER JOIN Nomenklat ON Obrabotka.koddet=Nomenklat.Kode
  GROUP BY Nomenklat.NameIzd
Опять вылетело из головы что мы можем связывать по полям которые не введены в селект, ну не одуплял я это и раньше
а теперь такой вопрос - теперь мне надо пустые поля Summa1 заполнить нулём
Код:
  ReportQuery.open;
    ReportQuery.First;
  while ReportQuery.Eof   do
  begin
     if  ReportQuery.FieldValues['Summa1'] <> ' ' then
     ReportQuery.FieldValues['Summa1']:= 0;
     end;
  ReportQuery.Next;


ReportQuery.Close;
ReportQuery.open;
ошибки нету, но не пашет, я скорей всего не верно беру величину поля...

Последний раз редактировалось ayPinki; 19.12.2014 в 10:36.
ayPinki вне форума Ответить с цитированием
Старый 19.12.2014, 10:50   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Во-первых end не там стоит.
Во-вторых видимо if VarIsNull(ReportQuery.FieldValues['Summa1']) then
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.12.2014, 10:55   #7
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Во-первых end не там стоит.
Во-вторых видимо if VarIsNull(ReportQuery.FieldValues['Summa1']) then
Код:
 while ReportQuery.Eof   do
  begin
     if  VarIsNull(ReportQuery.FieldValues['Summa1']) then
     ReportQuery.FieldValues['Summa1']:= 0;
  ReportQuery.Next;
  end;
без ошибки, но не заменяет пустое значение на 0(
Изображения
Тип файла: png 44432.png (3.5 Кб, 77 просмотров)
ayPinki вне форума Ответить с цитированием
Старый 19.12.2014, 10:58   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

DisplayFormat для поля настраивайте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.12.2014, 11:17   #9
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
Печаль

Цитата:
Сообщение от Аватар Посмотреть сообщение
DisplayFormat для поля настраивайте
Код:
    ReportQuery.DisplayFormat := '0000';
  while not ReportQuery.Eof   do
  begin

     if  VarIsNull(ReportQuery.FieldValues['Summa1']) then
     ReportQuery.FieldValues['Summa1']:= 0;
  ReportQuery.Next;
  end;
Код:

    (ReportQuery.FieldValues['Summa1']).DisplayFormat := '0000';
неа, ругается на андекларед идентификатион DisplayFormat
а во втором случае - invalid variant of operation

Последний раз редактировалось ayPinki; 19.12.2014 в 11:27.
ayPinki вне форума Ответить с цитированием
Старый 19.12.2014, 11:34   #10
ayPinki
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 97
По умолчанию

Код:
ReportQuery.Edit;
    ReportQuery.open;
    ReportQuery.First;


  while not ReportQuery.Eof   do
  begin

     if  VarIsNull(ReportQuery.FieldValues['Summa1']) then
     ReportQuery.FieldValues['Summa1']:= 0;
  ReportQuery.Next;
  end;
а в таком варианте пишет ReportQuery cannot modifi a read only dataset
ayPinki вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сгруппировать текстовые данные? Dima_com Microsoft Office Excel 18 17.06.2014 14:33
как сгруппировать строки в Excel? biv Microsoft Office Excel 36 04.09.2010 15:00
Помогите правильно сгруппировать строчки katerina7457 Microsoft Office Access 1 27.07.2010 13:34
сгруппировать код segail Microsoft Office Excel 2 02.07.2010 14:46
Запрос: Сгруппировать остатки по периодам Black_Guardian SQL, базы данных 14 03.08.2009 15:02