2014-12-13 3 views
1

Если у меня есть таблица базы данных SQL Server с столбцом бит-бита, и я хотел бы объединить логическое ИЛИ всех строк или несколько строк на основе предиката, как я могу достичь этого.Объединить значение битового поля по нескольким строкам (логическое ИЛИ накопление)

Например, таблица детали порядка имеет поле флага с сайт1 = 1 и site2 = 2.

Если заказ имеет две детали заказа записи, содержащие site1 и сайт 2, то я бы ожидать результирующее значение 3 для выбора.

Такая логика может выглядеть примерно так, но не существует функции агрегации для логического ИЛИ (или есть).

select ORDERNUM, SUM(LOGICAL OR (Flag)) 
    FROM ORDER_DETAIL 
GROUP BY ORDERNUM 

Некоторые примеры:

site2 
site2 
site1 
would equal 3 

site2 
site2 
would equal 2 

site1 
would equal 1 

ответ

1

Применение Distinct Sum

+0

Обратите внимание, что это решение работает только тогда, когда каждая строка имеет один значение бита (который работает на примере пользователя предусмотрен). Но если у нас есть данные по строкам вроде: 1, 1, 3, 7 (для чего вам нужен результат 7), вы получите 11. – GWR

Смежные вопросы