![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сгрупировать в запросе по полю с функцией [D6, IB6.x]
Mic_2000 © (2003-05-19 16:49:00)Есть примерно такой запрос:
select NOM, div(CKFK,10000)*10000 AS CKFK from TABLE
group by CKFK
Вообщем неполучается сгрупировать, можно ли как то это сделать без промежуточной таблицы
Johnmen (2003-05-20 09:18:00) [1]>Danilka © (20.05.03 07:49)
>если в интербезе можно группировать только по реальным полям,
>то это, конечно, проблемы интербейза.
Нет. Это проблемы "орокле" :)
Как сервера, ушедшего сильно в сторону в своем диалекте от SQL92. (Хорошо это или плохо, обсуждать не будем...:))
>Zacho © (20.05.03 08:16)
>...если не ошибаюсь, в FB.
Нет. По крайней мере в 1.0 нельзя...
Zacho (2003-05-20 08:16:00) [2]В IB - нельзя. Можно в Yaffil и, если не ошибаюсь, в FB.
Если нет желания перейти на Ya или FB, то стандартное решение - создать вычислимое поле (COMPUTED BY или заполняемое триггерами) и группировать по нему.
Danilka (2003-05-20 07:49:00) [3]Johnmen © (19.05.03 17:42)
только что проверил в орокле:
SELECT round(balance_account,-2)||round(balance_account,-3), count(*)
FROM accounts_card
GROUP BY round(balance_account,-2)||round(balance_account,-3)
и вот-так:
SELECT xxx, sum(balance_account)
FROM (SELECT round(balance_account,-2)||round(balance_account,-3) xxx, balance_account FROM accounts_card)
GROUP BY xxx
все пашет без вопросов. если в интербезе можно группировать только по реальным полям, то это, конечно, проблемы интербейза.
Johnmen (2003-05-19 22:37:00) [4]>Rad © (19.05.03 21:51)
>...какой-то подобный финт ВРОДЕ КАК был.
Но только не в IB6...:) И не в стандарте SQL92.
Rad (2003-05-19 21:51:00) [5]2 Johnmen © (19.05.03 17:42)
М-да, переклинило что-то меня.
Просто так можно сортировать (удобно при каких-то вычислениях в списке выбираемых полей -asиногда не помогает [-л?]); а по поводу хитрой группировки какой-то подобный финт ВРОДЕ КАК был.
Соловьев (2003-05-19 17:58:00) [6]попробовать вычислять ХП, а потом групировать...
Johnmen (2003-05-19 17:42:00) [7]>Mic_2000 © (19.05.03 16:49)
Нет,
>Danilka © (19.05.03 16:59)
Нет,
>Rad © (19.05.03 17:17)
И нет !
Группировать можно только по реальным полям, причем все поля, не входящие в агрегатные ф-ии должны быть в группировке.
Rad (2003-05-19 17:17:00) [8]
GROUP BY1
Danilka (2003-05-19 16:59:00) [9]1.
а что такое NOM?
может надо sum(NOM) или добавить его в уровень группировки?
2.
незнаю, в интербейзе можно делать так:
select sum(NOM), CKFK
from (select NOM, div(CKFK,10000)*10000 AS CKFK from TABLE)
group by CKFK
правда, на большом обьеме данных тормоза будут
Stas (2003-05-19 16:56:00) [10]Что такое NOM ?