Как мне сгруппировать tsql, заданный столбцом Flag bigint
Привет,
Я работаю над проектом, где эффективность функции поиска имеет решающее значение.
У меня есть несколько столбцов флагов (например, флаги перечисления в c#). Поиск по этим данным очень быстрый (3 миллисекунды туда и обратно), но теперь я пришел-а-Кроппер, и мне нужно выполнить подсчет групп.
Итак, у меня есть элемент "А", который содержит красный (1), Белый (8) и синий (64), поэтому столбец "цвета" содержит число 73.
Для поиска я могу искать предметы с красным цветом с помощью этого
Declare @colour int set @colour = 1 Select * from Items where (Colour & @colour) > 0
Это прекрасно работает. Теперь я должен сгруппировать его (тоже очень быстро)
таким образом, если у меня есть 8 элементов в общей сложности, 5 содержат красный, 3 содержат белый и 7 содержат синий, то результаты будут выглядеть следующим образом:
Colour Qty 1 5 8 3 64 7( Мне не нужно беспокоиться о названии )
Итак: есть ли какой-нибудь способ взять число 73 и побитово разделить его на группы?
(Часть 2: Как мне перевести это в Linq to SQL?)
Любые советы будут оценены по достоинству
Спасибо ^_^
Что я уже пробовал:
Попробовал написать логин в Linq, но забыл, что он не будет иметь перевода в TSQL.
Я подумываю о том, чтобы отказаться от этой колонки и превратить ее обратно в таблицу ссылок, но я действительно не хочу переделывать эту штуку в третий раз".;