Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
09.03.2013, 11:21
|
|||
---|---|---|---|
Group by в запросе |
|||
#18+
Доброго времени суток! Столкнулся вот с какой задачей: Есть таблица (в данном случае курсор ‘oldcurskva’), надо сформировать новый курсор (‘curskva’) с теми же полями ну и построчно просуммировать два поля (plkuh,plpod) в новое поле spodsob. Количество полей в ‘curskva’ плавающее, но эти 2 поля есть всегда. Задача довольно простая, но все упирается в выражение для GROUP BY, потом “пихаю” его в макроподстановку, получаю следующее: * Формирую выражение для GROUP BY (не знаю, как по-другому) kolpoley=FCOUNT('oldcurskva') strokapolei='' FOR i=1 TO kolpoley strokapolei=strokapolei+ALLTRIM(STR(i)) IF i<>kolpoley strokapolei=strokapolei+',' ENDIF ENDFOR * SELECT uu.*,CAST(SUM(uu.plkuh+uu.plpod) AS Numeric(5,1)) AS spodsob ; FROM oldcurskva uu GROUP BY &strokapolei INTO CURSOR curskva READWRITE Самое интересное, если установить SET ENGINEBEHAVIOR 70, весь этот «макроподстановочный формирователь» не нужен. Но использование подобной установки (SET ENGINEBEHAVIOR …) крайне нежелательно. Да и без макроподстановок лучше обойтись. (В статье Владимира Максимова макроподстановки подвергаются жесткой критике, в целом я с ним согласен.) Есть ли более изящное решение данной проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.03.2013, 15:34
|
|||
---|---|---|---|
Group by в запросе |
|||
#18+
По-хорошему надо просто перечислить поля вместо макроподстановки. Код: sql 1. 2.
И не изобретать велосипед с квадратными колесами. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.03.2013, 15:44
|
|||
---|---|---|---|
Group by в запросе |
|||
#18+
Pulsar_pЕсть таблица (в данном случае курсор ‘oldcurskva’), надо сформировать новый курсор (‘curskva’) с теми же полями ну и построчно просуммировать два поля (plkuh,plpod) в новое поле spodsob. Если задача стоит именно так, то зачем вообще GROUP BY ? Суммирование двух полей одной записи это "+" а не SUM() Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=41&tablet=1&tid=1583126]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 137ms |
0 / 0 |