![]() |
|
Модераторы: Akina |
![]()
|
|
| wwall |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 28.9.2006 Репутация: нет Всего: 4 |
Есть 3 таблицы
ПартияОстатки (КодТовара,КодПартии,Количество,СумммаЗакупа,СуммаПродажи) ПартияДвижения (КодТовара,КодПартии,Количество,СумммаЗакупа,СуммаПродажи) и ТаблицаРасходнаяНакладная (КодТовара, Количество,Сумма) заполненены примерно так ПартияОстатки КодТовара,КодПартии,Количество,СумммаЗакупа,СуммаПродажи 1, 1, 2, 5, 0 1, 2, 5, 20, 0 ТаблицаРасходнаяНакладная КодТовара, Количество,Сумма 1, 6, 100 Надо провести в Партии так ПартияДвижения КодТовара,КодПартии,Количество,СумммаЗакупа,СуммаПродажи 1, 1, 2, 5, (100/6)*2 1, 2, 4, (20/5)*4, (100/6)*4 У меня только одна мысль - бежать по курсору. Но можно ли это сделать одним запросом? или нет? Если можно то как? |
|||
|
||||
| programador |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.4.2006 Репутация: нет Всего: нет |
Поправь меня, если ошибаюсь, но это не "чистая" MS SQL задача, смахивает на 1С. В последней не имеет принципиального значения SQL-версия это или нет. Важнее другое - про какие таблицы идет речь - "документы", "регистры" и пр.. Если я вдруг прав - уточни с какой конфой имеем дело и точную постановку задачи. Если конфа мне знакома без проблем напишу тебе запрос. Хотя, в принципе, из того что я вижу - тут дело не в запросе. Ты похоже пытаешся реализовать списание товара по методу FIFO -списывая товар сначала с более ранней партии, а потом с более поздней. Это можно сделать банальной итерацией с выборкой по партиям: получил очередную партию - проверил сколько осталось списать (больше чем в партии или меньше) - берешь меньшее значение из двух (остаток партии или остаток по списанию) и делаешь проводку по данной партии - уменьшаешь остаток по списанию и так до тех пор пока остаток количества для проведения не будет равен или меньше нуля...
|
|||
|
||||
| wwall |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 28.9.2006 Репутация: нет Всего: 4 |
Да. Вы правы это 1С. Конфа - торговля самописка. Но это не имееет никакого значение. Интересует решение именно на скуле. Если я правильно понял то нужно использовать курсор? И уже бегая по нему списывать?
|
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |