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

Откуда:
Сообщений: 227
Други, помогите составить запрос. Совсем забыл SQL((

Гуглил, искал, всё не то...

Допустим, имеем такую таблицу:

ID | N_ID | Name | Value
1 | 2 | N1 | X1
2 | 4 | N1 | X2
3 | 5 | N1 | X3
4 | 3 | N1 | X4
5 | ??? | N1 | X5
6 | 9 | N2 | X6
7 | ??? | N3 | X7
8 | 15 | N2 | X8
9 | 8 | N2 | X9

где, ID - идентификатор записи (понятно и так), N_ID - идентификатор след.записи
Задача собрать такие последовательности, сгруппировав их по связке этих полей. Допустим у нас поля Value при этом будут суммироваться)

Хочу получить такой результат:

Name | Value
N1 | X1+X2+X4+X3+X5
N2 | X6+X9+X8+...
N3 | X7

Нюанс в том, что в исходной таблице значения "???" - это всё что угодно:
- NULL
- значение отсутствующего ID
- возможно зацикливающаяся ссылка (например, для записи 5, значение N_ID = 1 - зацикливание, но последовательность от 1 до 5 мы уже собрали, так что данное зацикливание нужно исключить)

Заранее благодарю.
24 май 17, 09:35    [20506500]     Ответить | Цитировать Сообщить модератору
 Re: Собрать записи в последовательность.  [new]
Zim90
Member

Откуда:
Сообщений: 105
Alex Shulg, а поле Name у Вас всегда указано верно?
24 май 17, 09:40    [20506526]     Ответить | Цитировать Сообщить модератору
 Re: Собрать записи в последовательность.  [new]
Alex Shulg
Member

Откуда:
Сообщений: 227
А еще может встретиться такая комбинация записей:

100 | 102 | N100 | X
101 | 102 | N101 | X
102 | 103 | N102 | X
103 | 104 | N102 | X

На 102 ссылаются 2 записи, значит цепочки от 100 и 101 нужно прерывать и не продолжать собирать, иначе цепочка со 102 записи включится в обе последовательности, что нельзя. Либо в одну, либо (если есть варианты) это новая последовательность.

:(
24 май 17, 09:41    [20506528]     Ответить | Цитировать Сообщить модератору
 Re: Собрать записи в последовательность.  [new]
Zim90
Member

Откуда:
Сообщений: 105
Alex Shulg,
Select Name1, sum(Value)
From MyTable
group by Name1


Как так не пробовали?
24 май 17, 10:13    [20506670]     Ответить | Цитировать Сообщить модератору
 Re: Собрать записи в последовательность.  [new]
Alex Shulg
Member

Откуда:
Сообщений: 227
1) поле Name - так просто, описательное. В 80% оно будет совпадать, в остальных 20 - может да, а может нет((
На это поле вообще не стоит обращать внимание, оно для инфы
24 май 17, 10:51    [20506853]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить