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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2012, 10:47   #1
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию Вопрос по group by

Доброго времени суток.
Firebird 1.5
Запрос в упрощенном виде выглядит так
Код:
select (a.f1 + a.f2 + a.f3 + a.f4)  as SUMMA_1,
 sum(b.rasxod) as SUMMA_2
 from a, b
 where a.data = b.data
 and a.cod = b.cod
group by ???????????, b.rasxod
Что написать вместо знаков вопроса? Firebird ничего не хочет принимать...
_SERGEYX_ вне форума Ответить с цитированием
Старый 21.03.2012, 10:49   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Код:
group by 1
?
или я просто не понял
vovk вне форума Ответить с цитированием
Старый 21.03.2012, 15:31   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

И так не хочет?
group by a.f1,a.f2,a.f3,a.f4
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.03.2012, 16:02   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Не-а, это же 4 поля будет вместо одного. Сразу пишет
Код:
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported.
_SERGEYX_ вне форума Ответить с цитированием
Старый 21.03.2012, 16:43   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Придется, все же, менять версию FB

Протестил на FB 2.5 этот запрос. Забавно, но показанные ниже три выражения в group by дали одинаковый результат (правильный на тестовых данных):
Код:
group by summa_1, b.cod
--group by a.f1, a.f2, a.f3
--group by a.f1 + a.f2 + a.f3
Указывать для группировки поле, к значениям которого применяется агрегат смысла не имеет (я про b.rasxod в предложении group by). Результат будет совсем не тем какой ожидается. Сервер собирает отдельно сумму (здесь сумму) по группе полей, у которых значения совпадают. В этом и есть смысл group by.
Прик вне форума Ответить с цитированием
Старый 21.03.2012, 17:24   #6
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
Придется, все же, менять версию FB
Эх, не придется... Слишком большая софтина, много работы.
Спасибо. Тему можно закрывать.
_SERGEYX_ вне форума Ответить с цитированием
Старый 21.03.2012, 17:41   #7
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
Эх, не придется... Слишком большая софтина, много работы.
Отчего же такой пессимизм?
Да и софтина, вряд ли при чем. Для замены версии сервера достаточно 5 минут (разве только если клиентов море - отстрел займет время). Переделок клиентских приложений не требуется...
Прик вне форума Ответить с цитированием
Старый 21.03.2012, 17:53   #8
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

select (a.f1 || a.f2 || a.f3 || a.f4) as SUMMA_1,
sum(b.rasxod) as SUMMA_2
from a, b
where a.data = b.data
and a.cod = b.cod
group by (a.f1 || a.f2 || a.f3 || a.f4)
ReportCube вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GROUP BY [InterBase] us4us БД в Delphi 5 28.05.2011 21:57
Group by and Having Progsenya SQL, базы данных 1 19.02.2011 19:18
GROUP BY Syltan SQL, базы данных 1 03.11.2009 13:39
Group в Excel Ora Общие вопросы Delphi 0 21.04.2009 11:04