В таблице A хранятся запасные / транзитные запасы для каждой статьи.
Таблица A
site article transfer_Stock transit stock
s1 a1 10 15
s1 a2 20 25
В таблице B имеется место для хранения статьи-статьи-хранилища
Таблица B
site article sloc stock
s1 a1 1000 5
s1 a1 2000 10
s1 a1 3000 15
s1 a2 1000 20
s1 a2 5000 25
Я хочу получить общий запас как для статьи сайта
Требуется вывод -
site article sloc transfer_stock transit_stock stock
s1 a1 1000 10 15 5
s1 a1 2000 0 0 10
s1 a1 3000 0 0 15
s1 a2 1000 20 25 20
s1 a2 5000 0 0 25
Я хочу перевести запас и транзитный запас по любому из ряда sloc.
В таблице A содержится 1 миллиард строк, а в таблице B - 1,5 миллиарда.
что такое оптимизированный способ достижения этого в sql.
В настоящее время мы достигаем этой цели
SELECT A.site,
A.article,
B.sloc,
case when MIN_B.sloc=B.sloc then A.transfer_stock else 0 end as transfer_stock,
case when MIN_B.sloc=B.sloc then A.transit_stock else 0 end as transit_stock,
B.stock
FROM A
LEFT OUTER JOIN B ON A.site = B.site AND A.article = B.article
LEFT OUTER JOIN (select site,article,min(sloc) from B group by site,article) MIN_B on A.site = MIN_B.site AND A.article = MIN_B.article