[ОТВЕТИТЬ]
Опции темы
11.06.2009 11:19  
Mr_Vito
есть табличка с полями
артикул| остаток
0254 | 30

есть табличка :
артикул| количество | дата | поставщик
0254 | 15 |5/05/2009 | постав1
0254 | 4 |4/05/2009 | постав2
0254 | 6 |3/05/2009 | постав1
0254 | 30 |2/05/2009 | постав3
0254 | 12 |1/05/2009 | постав1

как запросом можно получить из них табличку
артикул| остаток | поставщик
0254 | 21 | постав1
0254 | 4 | постав2
0254 | 5 | постав3

Научите уму разуму?
 
11.06.2009 11:36  
vdm
Как считается остаток в результате?
Я не понял *11
 
11.06.2009 11:38  
MirProd
Что понимать под "остатком" в результирующей таблице?
 
11.06.2009 11:59  
Mtirt
Ты хочешь расписать остаток по поставщикам?
Вот это не поможет?
https://olegon.ru/showpost.php?p=39543&postcount=11
 
11.06.2009 14:09  
Mr_Vito
Считается просто, остатки распределяются по поставщикам, считая от ближайшей поставки, получается:
постав1=15 | 5/05/2009
постав2=4 |4/05/2009
постав1=постав1+ 6 |3/05/2009 =15+6 = 21
и оставшийся кусочек до 30 от третьей поставки :)
 
11.06.2009 23:47  
MirProd
Цитата:
Сообщение от Mr_Vito
есть табличка с полями
артикул| остаток
0254 | 30

есть табличка :
артикул| количество | дата | поставщик
0254 | 15 |5/05/2009 | постав1
0254 | 4 |4/05/2009 | постав2
0254 | 6 |3/05/2009 | постав1
0254 | 30 |2/05/2009 | постав3
0254 | 12 |1/05/2009 | постав1

как запросом можно получить из них табличку
артикул| остаток | поставщик
0254 | 21 | постав1
0254 | 4 | постав2
0254 | 5 | постав3

Научите уму разуму?
Конкретно для твоего примера:

table1(article, quantity, createdat, supplier) - таблица поставок
table2(article, quantity) - таблица остатков

Код:
select article, sum(q) qq, supplier from
(select t1.article, t1.supplier
	case
	when t2.quantity-sum(t1.quantity) over (partition by t1.article order by t1.createdat desc rows unbounded preceding)+t1.quantity>=t1.quantity
	then t1.quantity
	when t2.quantity-sum(t1.quantity) over (partition by t1.article order by t1.createdat desc rows unbounded preceding)+t1.quantity<t1.quantity
	and t2.quantity-sum(t1.quantity) over (partition by t1.article order by t1.createdat desc rows unbounded preceding)+t1.quantity>0
	then t2.quantity-sum(t1.quantity) over (partition by t1.article order by t1.createdat desc rows unbounded preceding)+t1.quantity
	else 0
	end q
from table1 t1, table2 t2
where t1.article=t2.article and t2.quantity>0)
where q>0
group by article, supplier
order by article, supplier
 
12.06.2009 15:20  
Mr_Vito
Всем спасибо, разобрался :)
 
 
Опции темы



Часовой пояс GMT +3, время: 16:43.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.