2015-08-27 2 views
1

У меня есть следующий запрос:SQL получить внутреннее значение запроса

select SUM(balvalues) from 
(
    select ib.CURBAL as balvalues from invbalances ib join inventory on ib.itemnum = inventory.itemnum and ib.location = inventory.location where inventory.itemnum = 'XMP-3500' and ib.siteid = 'BEDFORD' 
    UNION ALL 
    SELECT -1 * SUM(QUANTITY) from matrectrans where itemnum = 'XMP-3500' and TRANSDATE >= '16-SEP-99' and tostoreloc = 'CENTRAL' 
    UNION ALL 
    SELECT -1 * SUM(QUANTITY) from matusetrans where itemnum = 'XMP-3500' and TRANSDATE >= '16-SEP-99' and storeloc = 'CENTRAL' 
); 

Однако я хочу добавить еще один столбец в наружном select (itemnum), так что я могу join с другим запросом:

select SUM(balvalues), ib.itemnum 

Я попробовал добавить itemnum к каждому внутреннему выбору, чтобы убедиться, что у меня одинаковое количество выходных столбцов для всех unions и внешний, но у меня все еще есть эта ошибка:

ORA-00904: "IB"."ITEMNUM": invalid identifier

Как я могу получить значение itemnum из подзапроса?

ответ

0

Добавить itemnum своих внутренние и внешние запросы. Добавьте групповые запросы в свои внутренние запросы и внешний запрос.

select SUM(balvalues), itemnum from 
(
    select ib.CURBAL as balvalues, inventory.itemnum as itemnum from invbalances ib join inventory on ib.itemnum = inventory.itemnum and ib.location = inventory.location where inventory.itemnum = 'XMP-3500' and ib.siteid = 'BEDFORD' 
    UNION ALL 
    SELECT -1 * SUM(QUANTITY), itemnum from matrectrans where itemnum = 'XMP-3500' and TRANSDATE >= '16-SEP-99' and tostoreloc = 'CENTRAL' group by itemnum 
    UNION ALL 
    SELECT -1 * SUM(QUANTITY), itemnum from matusetrans where itemnum = 'XMP-3500' and TRANSDATE >= '16-SEP-99' and storeloc = 'CENTRAL' group by itemnum 
) group by itemnum; 
+0

Я попробовал запрос и добавил группу по всем внутренним запросам, но получаю эту ошибку: ORA-00979: не выражение GROUP BY – AuthenticReplica

+0

Попробуйте изменить внутренний запрос на 'SELECT SUM (-1 * QUANTITY) как balvalues, itemnum ... ' – user1717259

+0

Я пробовал это и до сих пор получаю ту же ошибку:/ – AuthenticReplica

0

Внешний выбор не знает, этот столбца Вам нужно также добавить его во всех колбах выберите

+0

Я сделал это, и теперь я получаю эту ошибку: ORA-00937: не функция – AuthenticReplica

+0

группы одногрупповой Добавили ли вы группы, в вашем SQL? – ehh

+0

Итак, вы поставили группу, как я подозревал, и теперь она работает после ее удаления. – ehh

Смежные вопросы