2010-08-16 2 views
0

У меня есть процесс, который должен выбирать строки из таблицы (в очереди) каждая строка имеет столбец количеств, и мне нужно выбрать строки, в которых количества добавляются к определенному числу. Mulitple - это порядка между 4, 8, 10 (но теоретически может быть любым кратным (нечетным или четным)SQL Server SQL Select: как выбрать строки, в которых сумма столбца находится в пределах указанного множителя?

Любые предложения по выбору строк, где сумма поля имеет заданный множитель?

+1

Вы пытаетесь сделать Bin Packing? http://en.wikipedia.org/wiki/Bin_packing_problem –

+0

@Damien_The_Unbeliever: Спасибо за ссылку. Я подозреваю, что это аналогичная проблема. Очередь - это очередь печати, в которой мы печатаем конкретный количеств элементов на листе. Я придумал базовый итеративный алгоритм для проверки/добавления количеств в мультипликаторах, но интересно, что существует более изощренное SQL-решение ... (Отличие от примера Bin заключается в том, что мы можем иметь любое количество листов, это просто нужно быть кратным x, чтобы заполнить листы, уменьшить количество отходов и т. д., т. е. «Bin» может вырасти в кратности) –

ответ

1

Моя первая мысль была бы использовать какой-то функции MOD, который я считаю в сервере SQL это знак%. таким образом, критерии были бы что-то вроде этого

WHERE MyField % 4 = 0 OR MyField % 8 = 0 

это может быть не так быстро, так что еще путь может состоять в том, чтобы создать временную таблицу, содержащую 100 значений таблицы X раз (где X - это многократное число, которое вы ищете) и присоединиться к этому

+0

Спасибо, я использую это в C#, я думаю, что решение - это больше приложений, связанных с базой данных, просто пытаюсь найти другие/более опытные способы реализации вещей. Спроси это как вопрос на C#. Спасибо за верхнюю часть! –

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