powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Битовая логическая операция над агрегацией.
4 сообщений из 4, страница 1 из 1
Битовая логическая операция над агрегацией.
    #32828301
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASA9.Нужно в запросе с агрегацией по полю результатом чтобы была логичемкая битовая операция над значениями.
Т.Е что-то типа:
select field1, bitwise_OR(field1)
from table
group by field1
Красивого решения я пока не нашел, очень не хочится городить курсор.
...
Рейтинг: 0 / 0
Битовая логическая операция над агрегацией.
    #32829364
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне показалось что имелось ввиду:
select field1, bitwise_OR( field2 )
from table
group by field1

Кроме этого ничего в голову не приходит:
select field1,max(field2&&1)+max(field2&&2)+max(field2&&4)+..
from table
group by field1
...
Рейтинг: 0 / 0
Битовая логическая операция над агрегацией.
    #32829769
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Iller: Насчет field2 - все верно. Ваше решение, действительно выход, в любом случае, это гораздо лучше чем курсор, который я собрался городить.

2ASCRUS: Есть предложение, которе можно вынести на официальный форум по ASA. Мне кажется, что возможность применения к агрегациям битовых операций вполне полезный функционал. В моем случае, битовая операция над агрегацией мне понадобилась, т.к. битовое поле (в БД, которую я не разрабатывал) определяло права доступа. Соответсвенно агрегация по нему - определяла результирующее право.
...
Рейтинг: 0 / 0
Битовая логическая операция над агрегацией.
    #32835790
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторбитовое поле (в БД, которую я не разрабатывал) определяло права доступа. Соответсвенно агрегация по нему - определяла результирующее право
может вам это и не поможет, но подобную проблему я решил следующим способом. в процессе определения прав пользователя формируется временная таблица с правами по объектам
create table #perm(
object_id integer not null,
flags integer not null,
);
таблица может содержать несколько строк с одим object_id и разными правами - flags
следующий оператор суммирует права по object_id
update #perm as p set p.flags = p.flags|d.flags from #perm as p,#perm as d where
d.object_id = p.object_id;
теперь все строки с одним object_id имеют одинаковое значение flags равное сумме прав
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Битовая логическая операция над агрегацией.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]