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

Откуда:
Сообщений: 170
Итак, использую SQL 2008R2 Developer Edition
Есть большая таблица для расчетов. ЕЕ код ниже:

CREATE TABLE [mrp].[Consumption](
	[ComponentID] [int] NOT NULL,
	[Consumption] [decimal](18, 0) NULL,
	[VersionTheWeek] [varchar](5) NOT NULL,
	[Kodeweek] [varchar](5) NULL,
	[Consumption_Total] [decimal](18, 0) NULL,
	[Balance] [decimal](18, 2) NULL,
	[MinBalance] [decimal](18, 2) NULL,
	[ConfDelivery] [decimal](18, 0) NULL,
	[ConfDelivery_Total] [decimal](18, 0) NULL,
	[PlanBalance] [decimal](18, 0) NULL,
	[PlanDelivery] [decimal](18, 0) NULL,
	[CountFiled] [decimal](18, 0) NULL,
	[PlanOrder] [decimal](18, 0) NULL,
	[PlanDelivery_Total] [decimal](18, 0) NULL
) ON [PRIMARY]

GO

Расчеты каждого поля сделаны, да и они не должны вас интересовать.
Но на одном из этапов расчетов необходим пересчет в цикле.
Алгоритм такой:

...
SET [PlanBalance] = [StockNumber] - [PlanDelivery]
While обход всех [ComponentID]
While обход всех [Kodeweek]
1. Находим все [PlanBalance] < 0
2. SET [CountFiled] = ...
3. SET [PlanOrder] = ...
4. SET [PlanDelivery] = [PlanOrder]
5. SET [PlanBalance] = [StockNumber] - [PlanDelivery]
END
END
...

Тоесть суть цикла: для кажого [ComponentID] И недели [Kodeweek] пересчитывать [PlanDelivery] И в соответсвии с ним [PlanBalance].
И переходя на новый шаг использовать [PlanBalance] из предидущего.

Вопрос, можно ли в данной ситуации обойтись без циклов?
20 сен 12, 16:49    [13197477]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
danton,

нифига не понял и вашего объяснения чего надо сделать, используйте faq для создания первого поста.
20 сен 12, 17:00    [13197542]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
danton,

если речь о нарастающем итоге то поиск поможет, обсуждалось много раз.
20 сен 12, 17:01    [13197552]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
danton
Member

Откуда:
Сообщений: 170
WarAnt
danton,

если речь о нарастающем итоге то поиск поможет, обсуждалось много раз.


Нарастающие итоги используются в расчетах, но в моей задаче не думаю, что они помогут.
Нарастающий итог просчитывается один раз. Это фиксированные данные для одного поля.
А у меня в одной итерации пересчитываются несколько полей, связанные формулами.
20 сен 12, 17:10    [13197602]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
Glory
Member

Откуда:
Сообщений: 104760
danton
Нарастающий итог просчитывается один раз. Это фиксированные данные для одного поля.

нарастающий итог - это метод передачи каких то вычислений от записи к записи
20 сен 12, 17:13    [13197619]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
danton
Member

Откуда:
Сообщений: 170
Glory
нарастающий итог - это метод передачи каких то вычислений от записи к записи


Для одного поля?
20 сен 12, 17:14    [13197632]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
Glory
Member

Откуда:
Сообщений: 104760
danton
Glory
нарастающий итог - это метод передачи каких то вычислений от записи к записи


Для одного поля?

Для скольки сделаете, для стольки и будет
20 сен 12, 17:15    [13197641]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
danton
Member

Откуда:
Сообщений: 170
Glory
Для скольки сделаете, для стольки и будет


К моей задаче нарастающие итоги применимы?
20 сен 12, 17:26    [13197730]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
danton
Member

Откуда:
Сообщений: 170
danton,

Цикл нужен был как раз для того, чтобы в нем пересчитывались нарастающие итоги.
20 сен 12, 17:31    [13197760]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
Glory
Member

Откуда:
Сообщений: 104760
danton
Glory
Для скольки сделаете, для стольки и будет


К моей задаче нарастающие итоги применимы?

Откуда это известно
Вы же рассказали не про задачу, а про выбранный вами способ ее решения.
20 сен 12, 17:32    [13197771]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
danton
Member

Откуда:
Сообщений: 170
Glory
danton
пропущено...


К моей задаче нарастающие итоги применимы?

Откуда это известно
Вы же рассказали не про задачу, а про выбранный вами способ ее решения.


Задача: Расчитать планируемый заказ.

Вход: на текущую неделю - потребность на N недель вперед, остаток на складе на текущую неделю, подтвержденные поставки на текущую неделю.

Необходимо просчитать Остаток = Остаток на складе - Потребность + Подтверженная поставка.
Это реальный остаток.
Просчитываем так же поле Планируемый остаток = Остаток, далее бьудет пояснено зачем.

Как только остаток становится отрицательным, необходимо сделать заказ.

Вводим 2 понятия Планируемый заказ и планируемая доставка, он равны ежду собой, отличаются только неделями.

Соответсвенно если на какой то недели у нас планиуется доставка, то это необходимо учесть в остатке, потому и водили понятие плариуемого остатка, который равен:
Планируемый остаток = Остаток + Планируемая доставка. И уже с помощью него работать для последующих недель.

Такой пересчет мы деалем для всех N недель и N товаров.
20 сен 12, 17:49    [13197912]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Что-то мне кажется это в форум работа надо перенести.
Что мы подорвались читать заказ в клиентском стиле и разжёвывать что к чему.

Или чёткие скрипты таблиц и данных и примеры запросов (согласно требованиям форума) с вопросами что конкретно не получается в SQL (а не как решить задачу) или перенос топика.
20 сен 12, 19:12    [13198276]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от циклов.  [new]
danton
Member

Откуда:
Сообщений: 170
Mnior
Что-то мне кажется это в форум работа надо перенести.
Что мы подорвались читать заказ в клиентском стиле и разжёвывать что к чему.

Или чёткие скрипты таблиц и данных и примеры запросов (согласно требованиям форума) с вопросами что конкретно не получается в SQL (а не как решить задачу) или перенос топика.


Уважаемый, Mnior! Не прошу решать задачу, даже в мыслях не было.
Меня попросили ее описать, я с горяча накидал описание.
Сейчас сделаю все по правилам.
21 сен 12, 11:54    [13200828]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить