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.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, время: 13:14.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.