2015-11-19 6 views
0

Я полностью новичок в SQL-запросах и нуждаюсь в помощи в объединении некоторых операторов select, чтобы сформировать один запрос.SQL-запрос группы при использовании Union All

Начну один запрос в то время:

select sum(DOCI) 
from (
     select POL.SP_NUM, sum(Q.AMT + POL.AMT) DOCI 
     from S_ASSET POL 
     ,  S_QUOTE_ITEM Q 
     where POL.X_QUOTE_ID = Q.ROW_ID 
     and  POL.SP_NUM  in ('000','111','222') 
     group by POL.SP_NUM 

     UNION ALL 

     select POL.SP_NUM, sum(QXM.AMT) DOCI 
     from S_ASSET POL 
     ,  S_QUOTE_ITEM Q 
     ,  S_QUOTE_ITEM_XM QXM 
     where POL.X_QUOTE_ID = Q.ROW_ID 
     and  Q.ROW_ID  = QXM.PAR_ROW_ID 
     and  POL.SP_NUM  in ('000','111','222') 
     group by POL.SP_NUM 
    ) 

Таблицы:

S_ASSET 
X_QUOTE_ID POL  AMT 
A   000  1 
B   111  1 
C   222  1 

S_QUOTE_ITEM 
ROW_ID  AMT 
A   10 
B   10 
C   1 

S_QUOTE_ITEM_XM 
PAR_ROW_ID AMT 
A   10 
B   0 

Expected O/P: 
POL  AMT(sum) 
A  21 
B  11 
C  2 

Пожалуйста, помогите

+0

В чем ваш вопрос? –

+0

Я хочу иметь «Выберите POL.SP_NUM, sum (DOCI) из группы (select statements) по POL.SP_NUM» –

+0

, может быть, есть лучший метод кодирования, чем то, что я использовал для достижения этого –

ответ

0
SELECT sp_num, SUM(doci) 
    FROM (...subquery...) 
    GROUP BY sp_num; 

Имя таблицы pol существует только внутри подзапроса. Внешний запрос выбирает из результата подзапроса не из любой именованной таблицы.

+0

Спасибо Дарвин –

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