Получение остатков за период на каждый день SQL #433379


#0 by AndrejK
Можно ли как-то одним SQL запросом без циклов и курсоров получить остатки на каждый день по списку товаров?? И если можно - то как?? Может кто чего делал подобное???
#1 by los_hooliganos
Можно.
#2 by Mikeware
а у мню не получилось
#3 by orefkov
Группировка День ?
#4 by Sadovnikov
Теоритически можно. Используя хитрые связывания. Только ОЧЕНЬ долго работать будет. Проще посчитать в запросе остатки на начало и в запросе же цикл устроить, прибавляя обороты по дням.
#5 by AndrejK
Я так и сделал, работает довольно быстро. Хотеля выяснить, может кто как делал по-другому?? Это для 1С запроса и довольно глючная группировка
#6 by Mikeware
Так и сделал. Только цикл не в запросе.
#7 by Sadovnikov
А почему не в запросе?
#8 by Mikeware
Радиус кривизны рук маловат пока. :-)
#9 by Sadovnikov
Кстати, проводил интересный эксперимент. ТОчнее, не проводил, а он случайно получился :) Задача: есть таблица на мсскл, с неким полем Ид. В нем возврастающая последовательность 1, 2, 3, 4, 5, 6, 7, 9, 10. отсутствует 8. таким образом два интервала. интервалов может быть скока угодно, надо вернуть мин макс для всех. Имеем 2 решения: 1. Create Table #Z(K Int) Insert Into #Z Values Insert Into #Z Values Insert Into #Z Values-- Insert Into #Z Values Insert Into #Z Values Insert Into #Z Values-- Insert Into #Z Values Insert Into #Z Values Insert Into #Z Values Insert Into #Z Values-- Insert Into #Z Values-- Insert Into #Z Values Insert Into #Z Values Insert Into #Z Values-- Create Table #X (Min Int, Max Int) DECLARE @RowsCount Int, @ЧислоИзТаблицы Int, @МинЧисло Int, @ЧислоПоследовательности Int, @СтопудовоМинимальноеЧисло Int DECLARE Числа CURSOR Local Forward_Only Read_Only STATIC FOR Select K From #Z Order By K OPEN Числа End 2. create table t (n int) insert into t select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 9 select min(n) nMin, max(n) nMax from (select n, n-(select count(distinct n) from t tt where tt.n<t.n) e from t) z group by e drop table t При заполнении исследуемой таблицы таким образом: Create Table #Z(K Int) Declare @Число1 Int, @Число2 Int END первый запрос выполнился за 12 секунд. Второго я ждал 7 минут и надоело - остановил. P.S. Так что циклы - не всегда зло :)
#10 by Mikeware
Кто-то в воскресенье решение постил. проверь его
#11 by Sadovnikov
А покажи? Я не видел.
#12 by Mikeware
#13 by Sadovnikov
Так там как раз второй вариант из .
#14 by toypaul
можно. читать на sql.ru про нарастающий итог
#15 by Sadovnikov
И про проблемы с быстродействием :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С