нумерация в запросе по одинаковым датам #776176


#0 by aleee-eeex
Есть таблица вида: Надо сделать нумерацию, когда Период одинаков. Если Период меняется, то нумерация начинается с начала. За одну дату Подразделение и Сумма могут быть одинаковыми, но НомерЗаписи всегда везде разный и порядок в нем не соблюдается. Например: МойНомер /Период/ Подразделение / Сумма / НомерЗаписи Пробовал так: ВЫБРАТЬ рс.НомерЗаписи, рс.Период, ВЫБОР КОГДА КОЛИЧЕСТВО(вт.Период) ЕСТЬ NULL Тогда 0 иначе КОЛИЧЕСТВО(вт.Период) конец как МойНомер , рс.Подразделение, рс.Сумма из ВТ_расходы как рс левое  соединение ВТ_расходы как вт по рс.Период  >= вт.Период рс.Период, рс.Подразделение, рс.Сумма, рс.НомерЗаписи упорядочить по рс.Период Но, результат выглядит так(номерация не правильная) МойНомер /Период/ Подразделение / Сумма / НомерЗаписи 3/ 01.01.2016/ Подразделение1 / 1500 / 8 Понятно, что связал не правильно. Помогите исправить, пожалуйста.
#1 by Garykom
А понимаем что "нумерация в запросе" может на большой выборке данных "положить сервак"? Не проще кодом в ТЗ или хотя бы в СКД?
#2 by aleee-eeex
Да, Вы правы. СКД имеет стандартные средства для этого и так было бы конечно проще. Но это задание от преподавателя, сказано сделать именно запросом. Хотелось бы знать хотя бы идеи "КАК" сделать((
#3 by mkalimulin
Соединить таблицу с самой собой.
#4 by kosts
Предположение. Надо соединить с искусственной таблицей в которой нумерация от 1 до N. с условием что N меньше или равно количеству записей в группе одинаковых по периоду записей.
#5 by Garykom
до чего ленивые студенты пошли
#6 by Garykom
Как раз с группами оно само почти по
#7 by aleee-eeex
это я и сделал, спасибо.) но вопрос больше по условию соединения...
#8 by aleee-eeex
попробовал по Вашему совету...не правильно обрабатывает когда есть дубли дат: ВЫБРАТЬ    0 КАК Поле ПОМЕСТИТЬ Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ    (Числа1.Поле+4*Числа2.Поле+16*Числа3.Поле)+1 КАК НомерСтроки поместить ВТ_ЧислаПоПорядку ИЗ Числа КАК Числа1, Числа КАК Числа2, Числа КАК Числа3 ; выбрать из ВТ_расходы как рс СГРУППИРОВАТЬ ПО рс.период ; ВЫБРАТЬ рс.Период, вт.ЧислоЗаписейНаПериод, рс.Подразделение , ПОМЕСТИТЬ ВТ_РасхПоКоличеству из ВТ_расходы как рс левое соединение ВТ_ЧислоЗаписейНаПериод как вт по рс.Период = вт.Период ; ВЫБРАТЬ рс.Период, рс.Подразделение , рс.СуммаРасход, вт.НомерСтроки из ВТ_РасхПоКоличеству как рс левое соединение ВТ_ЧислаПоПорядку как вт по  вт.НомерСтроки <= рс.ЧислоЗаписейНаПериод упорядочить по рс.Период _______________________ в итоге получается: МойНомер /Период/ Подразделение / Сумма / НомерЗаписи ________________
#9 by Garykom
Блин читать то умеем? Аналогичную технику можно применить, если нужно задавать нумерацию строк с учетом группировки по какому-то полю.     Номенклатура.Ссылка КАК Номенклатура,     Номенклатура.Ссылка запрос с номерами строк в рамках группировки
#10 by aleee-eeex
Большое спасибо, оказывается как раз условия равенства по родителю и не хватало)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям