Ваш подзапрос не связан с основным запросом. То есть не хватает условия, на какой товар смотреть.
select
gq_depot,
gq_article,
gq_physique,
(
select warehouse.gq_physique
from dispo warehouse
where warehouse.gq_depot = '001'
and warehouse.gq_article = magasin.gq_article
) as wh_physique
from dispo magasin
where gq_depot <> '001'
order by gq_depot, gq_article;
Вы можете сделать то же самое с объединением:
select
magasin.gq_depot,
magasin.gq_article,
magasin.gq_physique,
warehouse.gq_physique as wh_physique
from dispo magasin
left join dispo warehouse on warehouse.gq_article = magasin.gq_article
and warehouse.gq_depot = '001'
where magasin.gq_depot <> '001'
order by magasin.gq_depot, magasin.gq_article;
Для удобства чтения вы можете использовать предложения WITH
, если они есть в вашей СУБД:
with warehouse as (select * from dispo where gq_depot = '001')
, magasin as (select * from dispo where gq_depot <> '001')
select
magasin.gq_depot,
magasin.gq_article,
magasin.gq_physique,
warehouse.gq_physique as wh_physique
from magasin
left join warehouse on warehouse.gq_article = magasin.gq_article
order by magasin.gq_depot, magasin.gq_article;
Вышеуказанные запросы работают только правильно, если gq_depot
+ gq_article
уникальны в таблице (например, составляют первичный ключ). В противном случае вам понадобится агрегация, чтобы получить всего gq_physique
за gq_depot
+ gq_article
.