Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Получение всевозможных комбинаций, удовлетворящих определенному условию  [new]
DontAskMe
Member

Откуда:
Сообщений: 111
Добрый день.
Возникла необходимость, написать запрос (T-SQL), который бы возвращал все возможные комбинации, удовлетворяющие определенному условию.

Пусть например у нас есть таблица

GroupedBYField ConditionField ToBeSummedField
1 1 1
1 1 2
1 1 3
2 2 4
2 2 5
2 2 6


Требуется получить все возможные комбинации (GroupedBYField, SUM(ToBeSummedField))
которые удовлетворяли бы условую SUM(conditionField) = 2.
P.S. Рассматриваются комбинации любого числа элементов с одинаковыми GroupedBYField, т.е.

GroupedBYField SumField
1 3
1 4
1 5
2 100
2 200
2 300

Для SUM(conditionField) = 3 результатом будет

GroupedBYField SumField
1 6

Буду благодарен за любую помощь.
14 дек 09, 14:04    [8063467]     Ответить | Цитировать Сообщить модератору
 Re: Получение всевозможных комбинаций, удовлетворящих определенному условию  [new]
DontAskMe
Member

Откуда:
Сообщений: 111
Не нашел как отредактировать опубликованное сообщение. В предыдущем посте при описании таблиц ошибки.
Исправления:
Таблица 1:

GroupedBYField       ConditionField           ToBeSummedField 
1                           1                           1
1                           1                           2
1                           1                           3
2                           2                           100
2                           2                           200
2                           2                           300

Для
SUM(conditionField) = 2.
Результирующим набором должно быть:

GroupedBYField             SumField 
1                             3 
1                             4 
1                             5 
2                             100 
2                             200 
2                             300


Для
SUM(conditionField) = 3.
результирующим набором должно быть:

GroupedBYField                SumField
1                                 6

14 дек 09, 14:20    [8063580]     Ответить | Цитировать Сообщить модератору
 Re: Получение всевозможных комбинаций, удовлетворящих определенному условию  [new]
Anddros
Member

Откуда:
Сообщений: 1077
Для 2005-2008
declare @t table (id int identity, a int, b int, c int)

insert @t select 1,1,1
union all select 1,1,2
union all select 1,1,3
union all select 2,2,100
union all select 2,2,200
union all select 2,2,300

declare @c int
select @c=2

;with q as (select id idd, a aa, b bb, c cc from @t where b<=@c union all
select id, a, bb+b, cc+c from q inner join @t on a=aa and id>idd and bb+b<=@c)
select distinct aa,cc from q where bb=@c option (maxrecursion 0)
14 дек 09, 14:43    [8063741]     Ответить | Цитировать Сообщить модератору
 Re: Получение всевозможных комбинаций, удовлетворящих определенному условию  [new]
DontAskMe
Member

Откуда:
Сообщений: 111
Спасибо за оперативный ответ.
14 дек 09, 17:32    [8065238]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить